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

EDI, CMS, Outils, Scripts et API PHP Discussion :

PHP Ligne de Commande


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 18
    Points : 11
    Points
    11
    Par défaut PHP Ligne de Commande
    Bonjour,

    J'effectuai récemment sans aucun problème des tâches planifiées appelant des batch qui exécutaient des scripts PHP.

    L'objet de ces scripts est un traitement rapide d'informations contenues dans une base, exports de ces informations sous forme de fichier csv puis envoi de l'export par mail.

    Or depuis 2 jours, sans modification de code, tous les traitements (update de la base et génération du fichier d'export) se font sans problème. Mais, seul, les emails ne partent plus ???

    J'ai testé mes scripts via un navigateur et là chose étrange les mails partent sans problème

    C'est le même script, aucun paramètre n'est envoyé au script, donc pourquoi se comporte-t-il différemment entre le navigateur et l'interpréteur de commande ?? Et surtout pourquoi maintenant et pas avant ??

    J'ai essayé de trouvé un palliatif en lançant le navigateur via une ligne de commande, là ça marche mais impossible de fermer le browser (même avec un taskkill juste après la commande d'ouverture du browser), donc pas top quand on a une douzaine d'export quotidien.

    Vous allez me dire "envoie sur un FTP !", je répondrai "j'aimerai bien, mais je suis obligé de passer par les mails. aaahh c'est utilisateurs ! grrr"

    Quelqu'un aurait-il une idée sur ce problème plutôt particulier ?

  2. #2
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    La différence entre l'appel depuis un navigateur et la ligne de commande est que l'appel par le navigateur est traité par l'instance apache ( ou autre serveur web )

    Par contre, si rien n'a changé, je ne vois pas.
    Peut-être un souci au niveau du serveur mail utilisé ?
    Pierre
    1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
    2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
    3. Un code rapide c'est bien, un code maintenable c'est mieux
    ...

    Why was the font tag an orphan ? Because it didn't have a font-family.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    oui, il faudra que je teste avec un autre SMTP.

    à défaut est-il possible d'envoyer une requête HTTP sans passer par un navigateur en ligne de commande ? Puis-je envoyer une commande à Apache ?

  4. #4
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    Tu peux utiliser php pour faire cela.

    un petit php qui remplace ton batch avec pour seul instruction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    file_get_contents('http://monurl/versmonphp.php');
    Pierre
    1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
    2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
    3. Un code rapide c'est bien, un code maintenable c'est mieux
    ...

    Why was the font tag an orphan ? Because it didn't have a font-family.

  5. #5
    Membre éclairé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Points : 872
    Points
    872
    Par défaut
    Bonjour,

    Il se peut que l'instance de PHP qui est lancée en ligne de commande soit différente de celle hébergée sur Apache (ex: php-cgi.exe avec Wamp). Ou que le fichier de conf php.ini utlilisé soit différent pour la ligne de commande..

    A la question "Pourquoi maintenant", je n'ai pas de réponse
    • Mon blog PHP : http://blog.alterphp.com
    • "Peace cannot be kept by force, it can only be achieved by Understanding" -- Albert Einstein

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    Tout d'abord merci pour vos réponses et l'intérêt que vous portez à mon post.

    bien vu le coup du file_get_contents() ça marche, le seul soucis c'est que je vais doubler mon nombre de script :
    - un script php qui contient le file_get_contents (appelé par le batch)
    - et un autre qui effectue le traitement (appelé par le file_get_contents)

    J'ai une douzaine de script indépendant, ça m'en ferait 24 !! Je pourrai passer le nom de la page php en paramètre depuis le batch, mais je ne sais pas comment envoyer(récupérer) un paramètre autrement que par du GET ou du POST...

    sinon j'ai essayé de regarder dans le php.ini, mais je ne vois rien qui concernerai une limitation des requêtes si elles sont envoyées par un interpréteur de commande au lieu d'un brower. As-tu une piste ?

  7. #7
    Membre éclairé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Points : 872
    Points
    872
    Par défaut
    Ce n'est pas dans un fichier.ini mais 2 fichiers php*.ini qu'il faudrait regarder.

    Sinon, exécute la commande phpinfo(); depuis ton navigateur et le terminal et compare... Il y a une ligne "Loaded Configuration File " qui indique l'emplacement du fichier ini chargé.

    Exemple sous Wamp :

    1 fichier php.ini pour le serveur Apache : wampdirectory/bin/apache/apachexx/bin/php.ini
    1 fichier php.ini pour la ligne de commande : wampdirectory/bin/php/phpx.x.x/php.ini
    • Mon blog PHP : http://blog.alterphp.com
    • "Peace cannot be kept by force, it can only be achieved by Understanding" -- Albert Einstein

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    oui et c'est bien dans ce fichier php.ini que j'ai été regarder, mais je n'ai rien trouvé qui puisse paramètrer l'interprétation de command passée autrement que par Apache...

  9. #9
    Membre éclairé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Points : 872
    Points
    872
    Par défaut
    J'ai écrit une erreur au-dessus, c'est un fichier php.ini pour Apache, 1 autre pour le CGI. Et pas deux configurations différentes dans le même fichier...

    As-tu fait le test avec phpinfo() ?
    • Mon blog PHP : http://blog.alterphp.com
    • "Peace cannot be kept by force, it can only be achieved by Understanding" -- Albert Einstein

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    c'est bon j'ai trouvé un palliatif, à l'origine voici la commande qui appelait mon script PHP :

    "C:\mon chemin vers php\php.exe" -q "C:\mon chemin vers mon script\script.php"

    L'option -q passe en mode silencieux et supprimer les entêtes HTTP (http://www.php.net/manual/fr/features.commandline.php)

    J'ai donc opté pour cette nouvelle commande (merci FCYPBA )
    "C:\mon chemin vers php\php.exe" -r file_get_contents('http://mon_url/script.php');

    En exécutant la commande PHP directement dans le batch (grâce à l'option -r), cela m'évite de doubler les scripts (un contenant le file_get_contents et un contenant le script)

    merci à vous

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

Discussions similaires

  1. Ligne de commandes en PHP
    Par nord dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 05/05/2006, 20h06
  2. Utilisation en ligne de commande de php ?
    Par JavaAcro dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 13/03/2006, 12h20
  3. [Directives] Execution script php en ligne de commande
    Par pingoo78 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 16/02/2006, 12h06
  4. PHP en ligne de commandes
    Par Lypertrophie dans le forum Langage
    Réponses: 3
    Dernier message: 09/01/2006, 16h46
  5. [Configuration] php en ligne de commande
    Par krusaf dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 13/04/2004, 20h05

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