Maison  >  Article  >  développement back-end  >  Comment implémenter des tâches planifiées en PHP ?

Comment implémenter des tâches planifiées en PHP ?

黄舟
黄舟original
2017-11-14 09:46:1724931parcourir

Nous vous avons présenté le principe de mise en œuvre des tâches planifiées PHP dans notre article précédent. Je pense que tout le monde comprend le principe des tâches planifiées PHP, nous allons donc aujourd'hui vous présenter PHP Comment. implémentez les tâches planifiées !

Recommandation de cours : "Cours de formation en ligne PHP"

1.

1. Écrivez un programme PHP, nommé test.php, avec le contenu comme suit


<?   
    $fp = fopen("test.txt", "a+");   
    fwrite($fp, date("Y-m-d H:i:s") . " 成功成功了!\n");   
    fclose($fp);   
?>

Écrivez le programme avec audace, vous pouvez utiliser n'importe quel includerequire, pas de problème

2 Créez un nouveau fichier Bat, nommé test.bat, le contenu est le suivant :


D:\php\php.exe -q D:\website\test.php

3. Créez des tâches planifiées WINDOWS :

Démarrer–>Panneau de configuration–>Planification des tâches–>Ajouter une planification des tâches

Parcourir Sélectionnez le fichier bat ci-dessus dans le dossier

Définissez l'heure et le mot de passe (connexion à WINDOWS)

Enregistrez-le.

4. Terminé ! Vous pouvez cliquer avec le bouton droit sur la tâche planifiée et cliquer sur "Exécuter" pour essayer

2. Dans Utiliser PHP pour exécuter des scripts

revient à appeler des scripts shell ordinaires dans Crontab (utilisation spécifique de Crontab), en utilisant des programmes PHP pour appeler des scripts PHP. Crontab

exécute

toutes les heures comme suit :

myscript.php


# crontab -e  
00 * * * * /usr/local/bin/php /home/john/myscript.php

pour PHP Le chemin du programme.

/usr/local/bin/php2. Utilisez l'URL pour exécuter des scripts dans Crontab

Si votre script PHP peut être déclenché par une URL, vous pouvez utiliser lynx ou curl ou wget pour configurer votre Crontab .

L'exemple suivant utilise le navigateur de texte Lynx pour accéder à une URL afin d'exécuter un script PHP toutes les heures. Le navigateur de texte Lynx utilise le mode conversationnel pour ouvrir les URL par défaut. Cependant, comme indiqué ci-dessous, j'utilise l'option

dans la ligne de commande lynx pour convertir la sortie URL en sortie standard.

-dump


00 * * * * lynx -dump http:
//www.centos.bz/myscript.php

L'exemple suivant utilise CURL pour accéder à l'URL afin d'exécuter un script PHP toutes les 5 minutes. Curl affiche la sortie sur la sortie standard par défaut. Vous pouvez également transférer la sortie du script vers un fichier temporaire en utilisant l'option "curl -o".


L'exemple suivant utilise WGET pour accéder à l'URL afin d'exécuter un script PHP toutes les 10 minutes. L'option -q indique le mode silencieux. "-O temp.txt" signifie que la sortie sera envoyée dans un fichier temporaire

*/5 * * * * /usr/bin/curl -o temp.txt http:
//www.centos.bz/myscript.php


3. PHP implémente l'exécution planifiée des tâches planifiées
*/10 * * * * /usr/bin/wget -q -O temp.txt http:
//www.centos.bz/myscript.php

Utiliser PHP pour actualiser le navigateur nécessite de résoudre plusieurs problèmes

1. Limite de temps d'exécution du script PHP, la valeur par défaut est

Solution :

ou modifier les paramètres PHP.ini.

Heure (non recommandé) 30m set_time_limit();max_execution_time2. Si le navigateur client est fermé, le programme peut être forcé de se terminer Solution :
Même si la page est fermée, il s'exécutera toujours. normalement

ignore_user_abort3. Si le programme est exécuté tout le temps, il est susceptible de consommer beaucoup de ressources. La solution est d'utiliser
pour mettre le programme en veille pendant un certain temps, puis l'exécuter. le code d'exécution planifié PHP

sleep


Lors des tests, nous avons constaté que cette efficacité n'est pas très élevée

<?php   
    ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.   
    set_time_limit(3000);// 通过set_time_limit(0)可以让程序无限制的执行下去   
     $interval=5;// 每隔5s运行   
    
     //方法1--死循环   
     do{   
        echo &#39;测试&#39;.time().&#39;<br/>&#39;;    
        sleep($interval);// 等待5s       
    }while(true);   
    
    //方法2---sleep 定时执行   
     require_once &#39;./curlClass.php&#39;;//引入文件   
        
     $curl = new httpCurl();//实例化   
     $stime = $curl->getmicrotime();   
    for($i=0;$i<=10;$i++){   
            
        echo &#39;测试&#39;.time().&#39;<br/>&#39;;    
        sleep($interval);// 等待5s   
            
    }   
    ob_flush();   
    flush();   
    $etime = $curl->getmicrotime();   
    echo &#39;<hr>&#39;;   
    echo round(($etime-stime),4);//程序执行时间

Résumé :

Cet article est implémenté via des tâches planifiées Windows, des scripts Linux et des exemples d'exécution de tâches planifiées par PHP, afin que vos amis puissent comprendre plus directement les tâches d'exécution planifiées par PHP. J'espère qu'il vous sera utile !

Recommandations associées :

Analyse des principes de la mise en œuvre PHP des tâches planifiées


tâches planifiées PHP et processus continus (fsockopen) instance


tâche planifiée php Détecter l'état de connexion de l'utilisateur

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