Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 09/09/2014, à 11:29

ing_tiziouzou2014

[RÉSOLU] Exécuter les scripts php avec cron

Bonjour à tous;
voilà , j'ai écris un script php qui teste le nombre d'enregistrements dans une table de ma base de données, lorsque ce nombre atteint 100000 enregistrements, il crée automatiquement une nouvelle table dans laquelle il va insérer les premiers 100000  enregistrements de ma table d'origine et supprime par la suite ces derniers . Je veux que cette opération se fasse une fois tous les jours , pour cela, je dois ajouter mon script aux tâches Cron de mon ubuntu 12.04.Quelqun pourra m'expliquer comment faire SVP ?sachant que je n'ai jamais utilisé CRON?


Je vous remercie infiniment pour votre aide.

Dernière modification par ing_tiziouzou2014 (Le 14/09/2014, à 16:23)

Hors ligne

#2 Le 09/09/2014, à 11:45

bruno

Re : [RÉSOLU] Exécuter les scripts php avec cron

Hors ligne

#3 Le 09/09/2014, à 12:00

ing_tiziouzou2014

Re : [RÉSOLU] Exécuter les scripts php avec cron

Merci Bruno, je connais ce lien mais je ne comprends rien

Hors ligne

#4 Le 09/09/2014, à 12:17

bruno

Re : [RÉSOLU] Exécuter les scripts php avec cron

Qu'est ce que tu ne comprends pas dans cette documentation .? Je reconnais qu'elle est incomplète et comporte des parties superflues, mais elle est relativement claire.

Hors ligne

#5 Le 09/09/2014, à 12:38

ing_tiziouzou2014

Re : [RÉSOLU] Exécuter les scripts php avec cron

Oui ,t'as  raison, elle est claire, mais  certains commandes ne s'exécutent pas, par exemple crontab -l , pourtant j'ai activé le compte système  root via la commande sudo -i et puis je ne sais pas comment introduire mon script dans crontab.

Hors ligne

#6 Le 09/09/2014, à 12:46

jplemoine

Re : [RÉSOLU] Exécuter les scripts php avec cron

Pour crontab, c'est un L minuscule pas un i majuscule.


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Hors ligne

#7 Le 09/09/2014, à 12:56

ing_tiziouzou2014

Re : [RÉSOLU] Exécuter les scripts php avec cron

Oui , je sais très bien que c'est un L minuscule, voici le résultat de la commende:
root@ubuntu:~# crontab -l
no crontab for root
root@ubuntu:~#

Dernière modification par ing_tiziouzou2014 (Le 09/09/2014, à 12:56)

Hors ligne

#8 Le 09/09/2014, à 13:07

ssdg

Re : [RÉSOLU] Exécuter les scripts php avec cron

"no crontab for root"

signifie que la table est vide. Il est toujours possible d'y ajouter un script.


s'il n'y a pas de solution, c'est qu'il n'y a pas de problème... ou pas.

Hors ligne

#9 Le 09/09/2014, à 13:14

jplemoine

Re : [RÉSOLU] Exécuter les scripts php avec cron

ing_tiziouzou2014 a écrit :

certains commandes ne s'exécutent pas, par exemple crontab -l ,

--> Si elle s’exécute : elle te dit juste qu'il n'y a pas de script programmé pour l'utilisateur root.


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Hors ligne

#10 Le 09/09/2014, à 13:41

bruno

Re : [RÉSOLU] Exécuter les scripts php avec cron

Personnellement je n'utiliserais pas crontab -e pour l'utilisateur root. Pour une tâche qui doit être exécutée au niveau système avec les droits root, le mieux est de créer un fichier dans /etc/cron.d

Dans la cas qui nous intéresse inutile de batailler avec crontab. On a un script php "mon_script.php" qui doit être exécuter quotidiennement. Après avoir vérifié que ce script fonctionne en ligne de commande, il suffit de créer un fichier bash :

#!/bin/sh
/usr/bin/php5 monscript.php

de l'enregistrer dans /etc/cron.daily et de le rendre exécutable.

Hors ligne

#11 Le 09/09/2014, à 14:09

ssdg

Re : [RÉSOLU] Exécuter les scripts php avec cron

bruno a écrit :

Personnellement je n'utiliserais pas crontab -e pour l'utilisateur root. Pour une tâche qui doit être exécutée au niveau système avec les droits root, le mieux est de créer un fichier dans /etc/cron.d

Dans la cas qui nous intéresse inutile de batailler avec crontab. On a un script php "mon_script.php" qui doit être exécuter quotidiennement. Après avoir vérifié que ce script fonctionne en ligne de commande, il suffit de créer un fichier bash :

#!/bin/sh
/usr/bin/php5 monscript.php

de l'enregistrer dans /etc/cron.daily et de le rendre exécutable.

Voire gagner une étape en mettant un shebang au script php est en le rendant lui meme executable:

ssdg@Tardis:~$ head /mnt/raid/www/tt-rss/update.php
#!/usr/bin/env php
<?php
        set_include_path(dirname(__FILE__) ."/include" . PATH_SEPARATOR .
                get_include_path());

        define('DISABLE_SESSIONS', true);

        chdir(dirname(__FILE__));

        require_once "autoload.php";

s'il n'y a pas de solution, c'est qu'il n'y a pas de problème... ou pas.

Hors ligne

#12 Le 09/09/2014, à 15:58

ing_tiziouzou2014

Re : [RÉSOLU] Exécuter les scripts php avec cron

Merci à vous  tous, dans mon cas alors, je dois copier mon script dans le dossier /etc/cron.daily puis je tape dans le terminal la commande : /usr/etc/monscript.php pour le faire exécuter, dites moi SVP est-ce-que je suis dans la bonne voie?

Hors ligne

#13 Le 09/09/2014, à 20:35

tiramiseb

Re : [RÉSOLU] Exécuter les scripts php avec cron

Salut,

À toi de voir : tu peux déplacer ton script dans /etc/cron.daily ou faire un lien dans /etc/cron.daily vers ton script. Tu peux également plutôt mettre une configuration dans /etc/cron.d/ si jamais tu veux quelque chose de plus précis.

Ensuite, si c'est pour une opération aussi basique, je te proposerais d'utiliser directement le client mysql plutôt que de lancer un script PHP.

Enfin, je me demande pourquoi ce besoin : 100 000 c'est vraiment pas grand chose pour une base de données...

Hors ligne

#14 Le 10/09/2014, à 16:28

ing_tiziouzou2014

Re : [RÉSOLU] Exécuter les scripts php avec cron

Salut tout le monde ;
Depuis hier et moi avec ce problème et rien de spécial .Pour ce qui concerne les 100 000 enregistrements, c'est juste un test car ma base de données contient actuellement 1434379 enregistrements ,mais au fur et à mesure, ce nombre pourra atteindre des millions   alors ma base de données risquera de se bloquer . c'est pour cette raison que je veux créer ce script, alors, j'ai procédé de la façon suivante:
-J'ai édité le fichier crontab à l'aide de la commande : nano /etc/crontab;
-J'ai  ajouté la ligne suivante  wget -q http://127.0.0.1/createtable.php car  mes scripts se lancent  par le serveur local Apache2.

voici mon fichier :
/etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --repo$
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --repo$
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --repo$
17 14 * * * wget -q http://127.0.0.1/createtable.php

Dernière modification par ing_tiziouzou2014 (Le 10/09/2014, à 16:29)

Hors ligne

#15 Le 11/09/2014, à 09:24

tiramiseb

Re : [RÉSOLU] Exécuter les scripts php avec cron

Il manque le nom d'utilisateur sous lequel lancer la commande. Là il va essayer de lancer "-q http://127.0.0.1/createtable.php" en tant que "wget". Ajoute "root" devant "wget".

Ce n'est de loin pas la meilleure approche à mon avis, mais ça peut marcher.

PS : les contenus de fichiers et les retours de commandes sont à mettre entre balises "code", obtenues en cliquant sur l'icône bt_pre.png.

Hors ligne

#16 Le 11/09/2014, à 10:07

ssdg

Re : [RÉSOLU] Exécuter les scripts php avec cron

Encore une fois, pourquoi ne pas executer directement le script avec l'utilitaire php plutot que de le faire executer par apache (plus de code à executer = plus de ressources consommées et de risques d'erreurs)


s'il n'y a pas de solution, c'est qu'il n'y a pas de problème... ou pas.

Hors ligne

#17 Le 11/09/2014, à 10:51

tiramiseb

Re : [RÉSOLU] Exécuter les scripts php avec cron

Je suis d'accord avec ssdg. Je ne vois pas ce qui empêcherait de lancer le script avec la commande php5 directement (paquet php5-cli), auquel cas tu peux toujours la lancer en tant que www-data si nécessaire.

Hors ligne

#18 Le 11/09/2014, à 14:37

ing_tiziouzou2014

Re : [RÉSOLU] Exécuter les scripts php avec cron

Bonjour à tous ;
Je reconnais que tout ce que vous m'avez écris m'a vraiment aidé, je vous remercie infiniment, vous avez entièrement raison: le problème se pose là , je ne programme pas directement en ligne de commande et comme j'avais l'habitude d'utiliser Dreamweaver sous windows ,j'ai fait la même chose avec linux et comme Dreamwever est une application windows, il m'a fallut d'abord installer WINE pour la faire fonctionner sous linux .Par conséquent , mon cron n'exécute pas mes scripts écris avec dreamweaver ,maintenant que je programme en ligne de commandes, tout marche bien , voici mon fichier crontab:

/etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

59 08 * * * root ls >f1.txt

07 11 * * * root php /var/www/html/supprimer.php

15 11 * * * root php /var/www/html/script_08_09.php

15 15 * * * root php /var/www/html/createtable.php

Merci à vous tous

Dernière modification par ing_tiziouzou2014 (Le 11/09/2014, à 14:40)

Hors ligne

#19 Le 11/09/2014, à 23:08

ssdg

Re : [RÉSOLU] Exécuter les scripts php avec cron

Si c'est résolu, pourquoi ne pas l'indiquer au monde entier (peut être même à la galaxie avec l'internet par satellite) en éditant ton premier message pour changer le titre en ajoutant "[résolu]" au début?

(en plus, si quelqu'un pose la même question avec un moteur de recherche, il saura qu'ici, il aura une réponse wink


s'il n'y a pas de solution, c'est qu'il n'y a pas de problème... ou pas.

Hors ligne