Maison > développement back-end > tutoriel php > Exemple de partage de code pour les tâches planifiées PHP

Exemple de partage de code pour les tâches planifiées PHP

黄舟
Libérer: 2023-03-17 12:46:02
original
2447 Les gens l'ont consulté

Nous vous avons déjà présenté le principe des tâches planifiées PHP, ainsi que la mise en œuvre de l'exécution planifiée des tâches planifiées. Parfois, nous devons traiter des bases de données distantes dans des projets, nous devons alors utiliser des tâches planifiées PHP. présentez-les-vous Présentation d'un exemple de traitement de tâches planifiées PHP !

Cette fois, utiliser PHP pour implémenter des tâches planifiées utilise principalement les trois fonctions ignore_user_abort() set_time_limit(0) sleep().

Exemple

<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> 
<tr> 
<td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> 
<td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy(&#39;copy1032&#39;)">复制代码</td> 
</tr> 
<tr> 
<td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy1032>

<?php 
ignore_user_abort(); //即使Client断开(如关掉浏览器),PHP脚本也可以继续执行. 
set_time_limit(0); // 执行时间为无限制,php默认的执行时间是30秒,通过set_time_limit(0)可以让程序无限制的执行下去 
$interval=60*5; // 每隔5分钟运行 
do{ 
$fp = fopen(&#39;test.txt&#39;,&#39;a&#39;); 
fwrite($fp,&#39;test&#39;); 
fclose($fp); 
sleep($interval); // 等待5分钟 
}while(true); 
?>

</td> </tr> </table>
Copier après la connexion

Le code spécifique est le suivant :

<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> 
<tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> 
<td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy(&#39;copy7070&#39;)">复制代码</td> 
</tr> 
<tr> 
<td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy7070>

<?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(&#39;www.phpernote.com&#39;);//实例化
$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);//程序执行时间

</td> </tr> </table>
Copier après la connexion

Fonction int ignore_user_abort :

À partir du nom de la fonction lui-même, elle peut être interprété comme « Ignorer l'impact de l'utilisateur »
Parce que le soi-disant utilisateur fait référence au client, c'est-à-dire le navigateur
, il est donc expliqué plus en détail comme « Ignorer l'impact du navigateur »

Alors à quoi fait référence l'impact ? À quoi fait référence l'impact ? Ce qui se passe, c'est la fermeture et l'exception du navigateur

C'est-à-dire le programme PHP avec cette fonction, même lorsque le navigateur est fermé, le programme continuera à s'exécuter jusqu'à ce qu'il soit terminé

Par exemple, vous avez un morceau de code qui doit être exécuté pendant 100 secondes, mais ce temps est trop long pour la plupart des utilisateurs. Je ne peux pas attendre. Après avoir attendu 60 secondes, ils ne peuvent pas le supporter et le fermer
Si le programme est terminé à ce moment-là, cela risque de provoquer des anomalies de données, des incohérences ou des erreurs. pour continuer à fonctionner, vous pouvez l'utiliser

Ses paramètres sont vrais et faux, vrai signifie ignoré, faux signifie non ignoré

Dans le processus de mise en œuvre spécifique, je pense personnellement que l'efficacité du planning de PHP l'exécution des tâches n'est pas élevée. Il est recommandé de laisser le travail d'exécution des tâches planifiées au shell. Relativement parlant, cette méthode est trop réticente à mettre en œuvre et le shell est de niveau professionnel.

2. Programme de script Linux

La commande crontab est principalement utilisée ici,

Utilisation :

crontab   filecrontab [ -u user ] [ -u user ] { -l | -r | -e }
Copier après la connexion

Instructions :

crontab est utilisé pour permettre aux utilisateurs d'exécuter des programmes à une heure ou un intervalle fixe

Utilisez crontab pour écrire des scripts shell, puis laissez PHP appeler le shell. Cela utilise les caractéristiques de Linux et ne devrait pas compter PHP lui-même. . Fonctionnalités du langage


Exécuter des scripts à l'aide d'URL dans Crontab

Si votre script PHP peut être déclenché par 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, nous utilisons l'option -dump sur la ligne de commande lynx pour convertir la sortie URL en sortie standard.

<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> 
<tr> <td width="464" height="27" bgcolor="#FFE7CE"> 
代码如下</td> 
<td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy(&#39;copy7213&#39;)">复制代码</td> 
</tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy7213>
00 * * * * lynx -dump http://www.111cn.net /script.php
</td> 
</tr> 
</table>
Copier après la connexion

L'exemple suivant utilise l'URL C 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".

<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> 
<tr> 
<td width="464" height="27" bgcolor="#FFE7CE"> 
代码如下</td> 
<td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy(&#39;copy6465&#39;)">复制代码</td> 
</tr> 
<tr> 
<td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy6465>
*/5 * * * * /usr/bin/curl -o temp.txt http://www.111cn.net /script.php</td> 
</tr> 
</table>
Copier après la connexion

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 vers un fichier temporaire.

<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> 
<tr> 
<td width="464" height="27" bgcolor="#FFE7CE"> 
代码如下</td> 
<td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy(&#39;copy1200&#39;)">复制代码</td> 
</tr> 
<tr> 
<td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy1200>
*/10 * * * * /usr/bin/wget -q -O temp.txt http://www.111cn.net /script.php
</td> </tr> </table></td> </tr> </table>
Copier après la connexion

Résumé :

Cet article est un exemple de tâches de planification PHP mises en œuvre via le processus de développement de projet réel. votre travail de développement. Il y a de l'aide !

Recommandations associées :

Comment implémenter l'exécution planifiée de tâches planifiées en PHP ?


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


php implémente des tâches planifiées et des instances de processus continus fsockopen


les tâches planifiées php détectent 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!

É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