IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Script en tâche Windows [Fait]


Sujet :

Langage PHP

  1. #1
    Membre confirmé Avatar de a028762
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 419
    Points : 537
    Points
    537
    Par défaut Script en tâche Windows
    J'ai développé sur le concept proposé par Matthieu http://matthieu.developpez.com/execution_periodique/
    sous WINDOWS (Schéma 6 de son article) et
    si le script initial tourne bien indéfiniment (même après fermeture du navigateur), les tâches de la liste ne s'exécutent pas .
    D'ailleurs, je ne comprends pas bien comment un fopen peut exécuter un script (http://localhost/monsite/toto.php) ...
    Si en plus je pouvais comprendre .....

    Ah, au fait, l'adresse de Mathieu ne fonctionne plus , donc impossible de le contacter directement ... matthieu@grimpentete.org pas glop !

  2. #2
    Membre actif Avatar de JmL40
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 348
    Points : 246
    Points
    246
    Par défaut
    Salut,

    Je remonte le sujet car j'ai moi-même expérimenté le script pour une sauvegarde périodique d'une BD MySQL.

    Malheureusement les tâches pré-programmée ne s'exécutent pas.

    Je suis donc à la recherche de renseignement concernant ce script, nous pourrions donc partager nos idées.

    Cordialement

  3. #3
    Membre confirmé Avatar de a028762
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 419
    Points : 537
    Points
    537
    Par défaut Sous WINDOWS , il y a des sols, mais pas pour tout !
    En fait, j'ai une solution pour certains scripts PHP.
    Pour fabriquer une page HTML, bricoler certains fichiers, etc ...
    Il suffit d'utiliser le scheduleur de windows et des .bat programmés
    c'est le mot, pour lancer des php-win.exe en mode commande ....
    Mais pour des tâches accédant par exemple à des bases ORACLE via ODBC, cela ne marche pas,
    seul le mode HTTP fonctionne !!! et donc c'est là que le fonctionnement du script de Matthieu m'intéresse
    Même si je ne comprends pas pourquoi ODBC et le client ORACLE ne sont
    accessibles que via le HTTP ... ???
    les variables PATH en particulier n'ont pas les mêmes valeurs ?.....

  4. #4
    Chef de projet PhpMyObject
    Avatar de Laplix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 66
    Points : 210
    Points
    210
    Par défaut
    Bonjour,

    Il y a deux façon d'exécuter du PHP, soit le mode CLI, soit le mode HTTP.

    En mode CLI, il s'agit simplement d'un script PHP qui s'exécute sur le système local de la même façon qu'un fichier .bat, mais en plus puissant évidemment. Dans ces conditions, il est possible de lancer des commandes OS telles que mysqldump.exe.

    En mode HTTP, les scripts PHP sont interprétés par un serveur web tel que Apache ou IIS. Dans ce cas, le script doit exister dans l'espace web du serveur et exécuter une requête contre la base de données pour générer le dump. Le programme wget de GNU permet l'exécution du script (version Windows ici).

    La commande fopen permet d'ouvrir un fichier sur un serveur distant et de charger son contenu dans une variable. La commande n'exécute pas le script en question. Il faut faire un eval(string) pour l'exécuter. ce qui n'est pas vraiment recommandé à moins de faire absolument confiance au script en question.

    Par la suite, toujours sous Windows, une commande FTP peut être exécutée pour récupérer le fichier résultat.

    En espérant que ceci a aidé un petit peu...
    L

  5. #5
    Membre confirmé Avatar de a028762
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 419
    Points : 537
    Points
    537
    Par défaut Merci de ton éclairage sur fopen
    Il me manquais donc la ligne sur eval ....
    je vais tester tout de suite

  6. #6
    Membre confirmé Avatar de a028762
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 419
    Points : 537
    Points
    537
    Par défaut Marche toujours pas !
    Dur, dur ! Un extrait de mon code ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
        echo "Etape 1".br;
        fputs($Traces,"réveil -> J:".$Jour.", H:".$Heure.", M:".$Minute."\n");
        foreach ($Taches->tache as $Tache) {
            if ($Tache->jour == $Jour) {
                if ($Tache->heure == $Heure) {
                    if ($Tache->minute == $Minute) {
                        echo "Etape 2".br;
                        $Procedure = utf8_decode($Tache->procedure);
                        fputs($Traces,"lancée la procedure=".$Procedure."\n");
                        $Execution = file($Procedure);                    # Mettre le code dans une variable
                        eval ($Execution);                                # Lancement de la procédure ?
                        echo "Etape 3".br;
                    }
                }        
            }
        }    
        echo "Etape 4".br;
    j'essaie de tracer ce qui se passe, mais rien à faire, aucune tâche n'est lancée !
    évidemment (!!!) , la tâche est un fichier php ($Procedure) appelé avec son adresse WEB absolu (??) comme spécifié dans le tutorial de Matthieu

  7. #7
    Chef de projet PhpMyObject
    Avatar de Laplix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 66
    Points : 210
    Points
    210
    Par défaut
    Tu utilise la commande "file()" pour lire ton fichier.

    file() retourne un tableau dont chaque ligne correspond à une ligne du fichier. eval() ne peut pas évaluer un tableau (du moins à ma connaissance).

    De son côté, fopen() ne fait qu'ouvrir le fichier pour lecture/écriture/etc. Il ne l'exécute pas.

    Or tu veux exécuter le fichier. Tu peux soit lancer une commande système ou utiliser wget comme un navigateur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat = system("php nomDuScript.php")
    Voir la syntaxe de system() : http://ca.php.net/manual/fr/function.system.php

  8. #8
    Membre confirmé Avatar de a028762
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 419
    Points : 537
    Points
    537
    Par défaut Merci de tes remarques acérées ...
    Ah, je comprends mieux ce que tu écris ...
    Dans le cas de la commande SYSTEM, que j'utilise déjà par ailleurs,
    Je retombe alors probablement dans le même problème que le .BAT que j'avais avant ou les variables PATH et ClassPath ne sont pas connues
    Piste à creuser donc, l'usage de WGET ....

    Merci encore ....

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. gestionnaire des tâches Windows
    Par yasinfo dans le forum Windows XP
    Réponses: 2
    Dernier message: 04/12/2006, 12h11
  2. Barre des Tâches Windows
    Par bandit boy dans le forum C++Builder
    Réponses: 7
    Dernier message: 03/05/2006, 11h05
  3. Script oracle pour windows & unix
    Par ALLFA dans le forum Oracle
    Réponses: 2
    Dernier message: 05/07/2005, 15h52
  4. barre de tâche Windows
    Par calou34 dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 10/05/2005, 21h42
  5. Ouvrir le planificateur de tâches Windows par programme
    Par BBPlastique dans le forum Windows
    Réponses: 8
    Dernier message: 16/07/2004, 12h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo