Maison  >  Article  >  développement back-end  >  PHP combine la commande cron de Linux pour implémenter des exemples de tâches planifiées

PHP combine la commande cron de Linux pour implémenter des exemples de tâches planifiées

小云云
小云云original
2018-03-21 13:19:541912parcourir

L'efficacité de la boucle infinie PHP pour gérer les tâches planifiées est très faible. Tout le monde recommande d'utiliser la commande crontab de tâches planifiées intégrée à Linux pour appeler le script PHP pour y parvenir. Cet article partage principalement avec vous un exemple d'implémentation de tâches planifiées utilisant PHP combiné avec la commande Linux cron. J'espère que cela pourra vous aider.

Deux méthodes pour les tâches planifiées PHP :
1. Appelez la page Web PHP via le Web, mais cela pose des problèmes de sécurité et les utilisateurs externes peuvent également appeler ce fichier.


*/1 * * * * /usr/bin/wget -q -O temp.txt http://wan.coolxap.cn/cron

2. Utilisez le mode php-cli pour appeler des scripts php. cli est un mode de ligne de commande pour exécuter des scripts php


<.>

* * * * * /usr/bin/php -f /root/test.php >> test.log
Utilisez crontab -e pour ajouter une tâche. Vous pouvez voir un fichier racine sous /var/spool/cron.

Redémarrez le service pour que la modification prenne effet


service crond restart
La granularité la plus fine de crontab est de quelques minutes, mais vous pouvez démarrer plusieurs tâches + dormir pour réaliser des tâches de simulation en quelques secondes.

* * * * * /bin/date >> /tmp/date.txt
* * * * * sleep 10; /bin/date >> /tmp/date.txt   
* * * * * sleep 20; /bin/date >> /tmp/date.txt
* * * * * sleep 30; /bin/date >> /tmp/date.txt
* * * * * sleep 40; /bin/date >> /tmp/date.txt
* * * * * sleep 50; /bin/date >> /tmp/date.txt列举个真实场景:


*/1 * * * * /usr/bin/wget --spider http://wan.coolxap.cn/cron/closeinvalidlive
0 0 27 * * /usr/bin/wget --spider http://wan.coolxap.cn/cron/magicdistributed
0 0 26 * * /usr/bin/wget --spider http://wan.coolxap.cn/cron/guildassessment
0 0 27 * * /usr/bin/wget --spider http://wan.coolxap.cn/cron/guildprizestatement

Lorsque la tâche planifiée ne fonctionne pas La tâche planifiée exécute le script php à l'intérieur.
Il s'avère qu'il ne peut pas être exécuté directement. Vous devez passer à l'utilisateur www pour exécuter le script php
Sinon, les opérations effectuées par le script sont effectuées avec les autorisations root. Par exemple, la création de répertoires de fichiers. et le téléchargement d'images appartiennent au groupe d'utilisateurs root.
Le problème directement causé est que les utilisateurs de la page Web ne peuvent pas utiliser le répertoire en raison d'autorisations insuffisantes. Par exemple, dans le répertoire créé par root, les utilisateurs Web ne peuvent pas télécharger d'images dans ce répertoire.

La solution est la suivante :

Passer en utilisateur www pour exécuter la commande


su www "-c cd /alidata/www/wwwroot/17xap/e/caidiscuz/ && /aliyun/webserver/php5.2.17/bin/php pushnews2.php -9 -u"
Résolvez également l'image. Une petite astuce que j'ai trouvée lors du téléchargement pour résoudre le problème.

Lors de l'utilisation de l'interface pour accéder à un certain fichier php, j'ai constaté que le téléchargement de l'image échouait, ce qui indiquait que les autorisations étaient insuffisantes et que l'opération de stockage de l'image ne pouvait pas être effectuée dans le répertoire.
Vérifiez ensuite que les autorisations du répertoire sont wr-wr-wr 0666, qui prend théoriquement en charge la lecture et l'écriture du répertoire. Mais pourquoi ne puis-je pas télécharger d’images ?
Car sans autorisations x, vous ne pouvez exécuter aucune commande dans ce répertoire, y compris mkdir, ls, etc. La création d'images nécessite non seulement l'autorisation w mais également l'autorisation x.
Après avoir modifié l'autorisation en wrx-r-xr-x 0755, l'image peut être téléchargée normalement.

L'astuce pour résoudre le problème est d'abord d'accorder des autorisations 0777 suffisantes. Une fois le problème résolu et qu'il est déterminé que le script ne peut pas s'exécuter normalement en raison d'autorisations de répertoire insuffisantes, puis de reprendre les autorisations du répertoire et augmentez progressivement les autorisations.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn