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 :

Automatiser l'éxecution d'un script PHP avec Crontab


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Expert confirmé

    Avatar de Siguillaume
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2007
    Messages
    6 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 6 180
    Par défaut Automatiser l'éxecution d'un script PHP avec Crontab
    Bonjour à tous, je ne sais pas si je suis dans le bon forum, pour émettre ce problème, mais je voudrais qu'un script PHP se lance périodiquement.

    Je sais que l'automatisation des tâches se fait avec cron, mais généralement les tâches à lancer sont des commandes ou des exécutables.

    Comment alors le faire avec un script PHP, qui lui est éxecuter avec un serveur Web Apache?
    Peux-t-on executer PHP, sans un serveur Web, c'est-à-dire créer un executable de PHP?

    Merci.

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Le plus souvent, une version CLI (en ligne de commande) de PHP est installée en même temps que la version pour serveur. Il suffit de l'utiliser alors.
    Pour savoir s'il est installé, il suffit d'entrer en ligne de commande:
    php -v
    Sinon, sous linux, il reste toujours la possibilité d'exécuter un script par wget, à condition que le script soit accessible sur le net.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 130
    Par défaut
    Salut,
    j'ai un fichier PHP qui est exécuté par cron sur un des serveurs au boulot, et il est lancé comme suit.

    Dans le cron, j'ai inscrit le fichier suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #!/bin/sh
     
    /usr/bin/php -f <chemin vers ton script>
    Ce fichier est aussi passé en exécutable, sinon ça ne fonctionne pas (enfin je crois, ça date tout ça).

    Sachant bien sur que "/usr/bin/php" est le chemin vers le binaire php, c'est à changer s'il n'est pas à cet emplacement sur ton serveur.

    Ton script à exécuter peut être n'importe où, donc ceux accessibles par ton serveur web sont aussi susceptibles d'être exécutés comme ça.

    Ceci fonctionne très bien (PHP 5.2 sur une RedHat Entreprise dont je ne me souviens pas la version exacte).

    Bonne chance.

  4. #4
    Expert confirmé

    Avatar de Siguillaume
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2007
    Messages
    6 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 6 180
    Par défaut
    Merci à vous deux pour vos reponses. Mais, il y a encore de petits soucis.
    Citation Envoyé par jojosbiz Voir le message
    Ce fichier est aussi passé en exécutable,
    Voici l'un des problèmes que je rencontre. Comment le faire? Le chmod +x est-l suffisant?

    Citation Envoyé par jojosbiz Voir le message
    Sachant bien sur que "/usr/bin/php"
    Chez moi, j'ai /usr/bin/php4-cgi et /usr/bin/php-cgi. Mais, il me semble que mon serveur Web n'exploite que le /usr/bin/php4-cgi.
    Sont-ils compatibles avec ce que vous avez donné?

    Pour venir sur la commande de Tsilefy, le système me retourne command not found. C'est logique avec ce que j'ai dit plus haut, n'est ce pas?

    Merci à tous!

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    essaie
    /usr/bin/php4-cgi -v
    ou
    /usr/bin/php-cgi -v pour voir s'ils fonctionnent depuis la ligne de commande. Normalement, c'est php-cli qui fonctionne en ligne de commande (avec la commande php), mais on ne sait jamais.

    chmod + x devrait fonctionner.

  6. #6
    Expert confirmé

    Avatar de Siguillaume
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2007
    Messages
    6 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 6 180
    Par défaut
    ça ne marche toujours pas. Voici la procédure que j'ai suivi:
    1- j'ai mis mon fichier en mode executable:
    chmod + x <monrepertoire/mon_fichier>

    2- j'ai crée un fichier cronmail dans lequel j'ai écrit ceci:
    * * * * * /usr/bin/php4-cgi - v /<monrepertoire/mon_fichier>

    3- j'ai fait lancé la commande: crontab cronmail.

    Je reçois une notification sur le mail de l'utilisateur que le cron fonctionne, mais l'action à faire par le script PHP n'est pas réalisée: il s'agit de supprimer des messages dans une boîte à message.

    Je sais plus trop vers quoi m'orienter

    Merci de votre aide.

  7. #7
    Expert confirmé

    Avatar de Siguillaume
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2007
    Messages
    6 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 6 180
    Par défaut
    Il fallait plutôt faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    * * * * * /usr/bin/php4-cgi - f /<monrepertoire/mon_fichier>
    Pour que les choses marchent.
    Tout est ok.

    Merci à tous!

  8. #8
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Mais oui
    -v sert à déterminer la version installée. C'est juste pour tester si l'exécutable est accessible depuis la ligne de commandes ou pas.

  9. #9
    Expert confirmé

    Avatar de Siguillaume
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2007
    Messages
    6 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 6 180
    Par défaut
    Citation Envoyé par Tsilefy Voir le message
    -v sert à déterminer la version installée. C'est juste pour tester si l'exécutable est accessible depuis la ligne de commandes ou pas.
    C'est finalement ce que j'ai fini par comprendre
    Avec -v, il me retournait PHP4, etc.

    Merci beaucoup de ton aide!

  10. #10
    Membre éclairé Avatar de elvan49
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 274
    Par défaut Quand on est hébergé
    Bonjour à tous,

    J'ai lu avec intérêt cette discussion qui me laisse quelques questions.
    Mon site est hébergé, je voudrais mettre en place un script de nettoyage de mes bases de données (genre vers minuit chaque jour).
    Donc pas de ligne de commande... (enfin pas à ma connaissance) comment procéder ?

    PS : je me renseigne bien-sûr auprès de mon hébergeur...

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

Discussions similaires

  1. Problème d'exécution d'un script php avec crontab
    Par jakj82 dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 04/02/2014, 12h52
  2. Exécuter script php avec crontab
    Par Sh4dow49 dans le forum Administration système
    Réponses: 1
    Dernier message: 29/07/2008, 15h49
  3. [SQL-Server] Erreur 500 lors d'un script php avec sql
    Par DeusDavid dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 15/12/2006, 18h47
  4. Background d'un script php avec perl et unix (ou linux)
    Par fichiertempo dans le forum Web
    Réponses: 4
    Dernier message: 20/07/2006, 07h03
  5. Problèmes de timeout pour un script PHP avec Apache
    Par bluemartini dans le forum Apache
    Réponses: 2
    Dernier message: 11/07/2006, 16h16

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