Maison > développement back-end > Problème PHP > Comment exécuter php automatiquement tous les jours

Comment exécuter php automatiquement tous les jours

藏色散人
Libérer: 2023-03-14 16:38:02
original
4078 Les gens l'ont consulté

Comment implémenter l'exécution automatique de php tous les jours : 1. Installez crontab sur le serveur ; 2. Consultez la liste des tâches d'exécution planifiées de crontab 3. Définissez selon les règles de configuration de l'heure.

Comment exécuter php automatiquement tous les jours

L'environnement d'exploitation de cet article : système linux5.9.8, PHP version 7.1, ordinateur Dell G3.

php ne peut pas être exécuté régulièrement tous les jours, seuls Java ou C le peuvent, car php ne touchera pas au code sans accéder à la page, mais il existe un moyen de sauver le pays

Vous écrivez une page que vous souhaitez exécuter régulièrement tous les jours jour , puis en fonction de votre système d'exploitation, effectuez une tâche planifiée et visitez cette page régulièrement. Cet article prend le système Linux comme exemple.

PHP implémente des tâches planifiées

Utilisez d'abord la commande pour vérifier si le service est en cours d'exécution

systemctl status crond.service
Copier après la connexion

Si crontab n'est pas installé sur le serveur, vous pouvez exécuter

yum install vixie-cron
yum install crontabs
Copier après la connexion

Commandes communes

systemctl restart crond.service #启动服务 systemctl reload crond.service #重新载入配置 systemctl status crond.service #查看crontab服务状态 systemctl enable crond.service #开机自启动
Copier après la connexion

Après avoir démarré le service, vous pouvez entrer la commande (appuyez sur i pour modifier)

crontab -u root -e #进入定时任务编辑
Copier après la connexion

Afficher la liste des tâches d'exécution planifiées de crontab

crontab -l
Copier après la connexion

Paramètres associés

基本格式 :  
*    *  *   *   *  command  
分  时  日  月  周   命令  
第1列表示分钟1~59 每分钟用*或者 */1表示 (每分钟用或者 */1表示,/n表示每n分钟,例如*/8就是每8分钟的意思,下面也是类推)
第2列表示小时1~23(0表示0点)  
第3列表示日期1~31  
第4列表示月份1~12  
第5列标识号星期0~6(0表示星期天)  
第6列要运行的命令
Copier après la connexion

Afficher le journal dynamique (s'il y a plusieurs 33 octets de sortie envoyés par courrier, obtenez le statut 0x004b#012, veuillez vous déplacer vers : https://bbs.aliyun .com/simple/t135851.html) :

tail -f /var/log/cron
Copier après la connexion

Exemple

*/2 * * * * curl -o /home/index.html www.baidu.com #每隔两分钟使用curl 访问www.baidu.com 并将结果写入/home/index.html 文件
Copier après la connexion
00 * * * * lynx -dump https://www.yourdomain.com/script.php   #当前时间的分钟数为00时,执行该定时任务
Copier après la connexion
lynx -dump https://www.yourdomain.com/script.php  #通过lynx访问这个url。我们在使用中主要用到lynx、curl、wget来实现对url的远程访问,而如果要提高效率,直接用php去执行本地php文件是最佳选择
Copier après la connexion
00 */2 * * * /usr/bin/php /home/www/script.php  #直接用php去执行本地php文件
Copier après la connexion

Cette instruction peut exécuter script.php via l'environnement php interne de Linux à 0 minute toutes les 2 heures. on n'y accède pas via l'URL, via Il est exécuté dans l'environnement du serveur, mais exécuté directement. Parce que l'environnement du serveur est contourné, l'efficacité est bien sûr beaucoup plus élevée.

Quant à savoir pourquoi vous devez utiliser /usr/bin/php, vous pouvez utiliser la commande : which php 或者 whereis php View

Dans crontab, affichez les résultats de l'exécution dans un fichier. Vérifiez ensuite l'état d'exécution dans ce fichier. Par exemple :

*/1 * * * * /usr/bin/php /data/dou/web/api/cron.php >> /data/dou/web/cron.txt
Copier après la connexion

Exécution continue des commandes :
Exécutées dans l'ordre (séparées par `;`)

cmd1;
cmd2;
cmd3;
Copier après la connexion

Exécutée par ET logique (séparées par &&)

cmd1&&cmd2&&cmd3;
cmd4;
Copier après la connexion

Exécutée par OU logique : (séparées par ||)

cmd1||cmd2||cmd3;
cmd4;
Copier après la connexion

C'est-à-dire que lorsque la valeur de retour est 0, le ET logique continue de s'exécuter. Lorsque la valeur de retour n'est pas 0, le OU logique continue de s'exécuter. C'est la même chose que le ET logique et le OU logique. court-circuit du programme habituel (`?` est la valeur de retour, commande Lorsque l'exécution est correcte, la valeur de retour est 0. Vous pouvez la tester via echo $?, en recherchant spécifiquement "return")
combinaison :
cmd1;

cmd2||cmd3&&cmd4;

cmd5;
Exécutez d'abord cmd1 puis cmd2, si cmd2 renvoie Si la valeur passée est non-0, cmd3 sera exécuté Si la valeur renvoyée par cmd3 est 0, cmd4 sera exécuté, puis continuez à être exécuté dans l'ordre.

Exemple de règles de réglage de l'heure :

1 Exécutez régulièrement la règle toutes les minutes :
Exécutez toutes les 1 minute : */1 * * * * ou * * * * *
. Exécuter toutes les 5 minutes : */5 * * * *

2. Exécuter la règle toutes les heures :
Exécuter toutes les heures : 0 * * * *ou 0 */1 * * *
Exécution à 7 heures du matin tous les jours : 0 7. * * *
Exécution à 7h10 tous les jours : 10 7 * * *

3. Exécutez la règle régulièrement chaque jour :
Exécution tous les jours 0 0 * * *

4. Exécutez la règle une fois par semaine 0 0 * * 0

5. Exécutez la règle régulièrement chaque mois :

Exécutez la règle chaque mois 0 0 1 * *

6. Exécutez la règle régulièrement chaque année :

Exécutez 0 0 1 1. *

7 chaque année. Autres exemples

5 * * * * Spécifiez la commande ls à exécuter à la 5ème minute de chaque heure
30 5 * * * ls Spécifiez la commande ls à exécuter à 5h30 chaque jour
30 7 8 * * ls précise la commande ls à exécuter à 7h30 le 8 de chaque mois
30 5 8 6 * ls précise la commande ls à exécuter à 17h30 le 8 juin de chaque année
30 6 * * 0 ls spécifie le 6 de chaque dimanche : 30 Exécutez la commande ls [Remarque : 0 signifie dimanche, 1 signifie lundi 1, et ainsi de suite. Il peut également être exprimé en anglais, sun signifie dimanche, mon signifie lundi, etc. ]
30 3 10,20 * * ls Exécute la commande ls à 15h30 le 10 et le 20 de chaque mois [Remarque : "," est utilisé pour connecter plusieurs périodes discontinues]
25 8-11 * * * ls Every day Exécutez la commande ls à la 25ème minute de 8 heures à 11 heures [Remarque : "-" est utilisé pour connecter des périodes consécutives]
*/15 * * * * ls Exécutez la commande ls toutes les 15 minutes [c'est-à-dire le 0 15 30 de chaque heure 45 Exécutez la commande ls en 60 minutes]
30 6 */10 * * ls Exécutez la commande ls à 6h30 tous les 10 jours de chaque mois [soit 6h30 le 1er, le 11 , le 21 et le 31 de chaque mois Exécutez la commande ls une fois. ]

【Apprentissage recommandé :

Tutoriel vidéo PHP

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal