Heim  >  Artikel  >  Backend-Entwicklung  >  Beispielcode-Freigabe für geplante PHP-Aufgaben

Beispielcode-Freigabe für geplante PHP-Aufgaben

黄舟
黄舟Original
2018-05-15 14:23:132394Durchsuche

Wir haben Ihnen zuvor das Prinzip der geplanten PHP-Aufgaben sowie die Implementierung der geplanten Ausführung geplanter Aufgaben vorgestellt. Manchmal müssen wir in Projekten Remote-Datenbanken verarbeiten, dann müssen wir dies tun Wir stellen sie Ihnen vor. Wir stellen Ihnen ein Beispiel für die Verarbeitung geplanter PHP-Aufgaben vor!

Dieses Mal werden bei der Verwendung von PHP zum Implementieren geplanter Aufgaben hauptsächlich die drei Funktionen „ignore_user_abort()“ set_time_limit(0) „sleep()“ verwendet.

Beispiel

<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>

Der spezifische Code lautet wie folgt:

<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>

Function intignore_user_abort:

Aus dem Funktionsnamen selbst geht hervor, dass dies möglich ist interpretiert werden als „Ignorieren Sie die Auswirkungen des Benutzers“
Da sich der sogenannte Benutzer auf den Client bezieht, dh den Browser
, wird dies weiter als „Ignorieren Sie die Auswirkungen des Browsers“ interpretiert.

Worauf bezieht sich die Auswirkung? Worauf bezieht sich die Auswirkung? Was passiert, wenn der Browser geschlossen wird?

Das heißt, das PHP-Programm mit dieser Funktion, Selbst wenn der Browser geschlossen ist, wird das Programm so lange ausgeführt, bis es fertig ist

Sie haben beispielsweise einen Code, der 100 Sekunden lang ausgeführt werden muss, aber diese Zeit ist für die meisten Benutzer zu lang Nach 60 Sekunden können sie es nicht ertragen und schließen. Wenn das Programm zu diesem Zeitpunkt beendet wird, kann es zu Datenanomalien, Inkonsistenzen oder Fehlern kommen Um die Ausführung fortzusetzen, können Sie es verwenden

Seine Parameter sind wahr und falsch, wahr bedeutet ignoriert, falsch bedeutet nicht ignoriert

Im spezifischen Implementierungsprozess habe ich persönlich das Gefühl, dass die Effizienz von PHP geplant ist Die Aufgabenausführung ist nicht hoch. Es wird empfohlen, die Arbeit der geplanten Aufgabenausführung der Shell zu überlassen. Relativ gesehen ist die Implementierung dieser Methode zu schwierig, und die Shell ist auf professionellem Niveau.

2. Linux-Skriptprogramm

Der Befehl crontab wird hier hauptsächlich verwendet,

Verwendung:

crontab   filecrontab [ -u user ] [ -u user ] { -l | -r | -e }
Anweisungen:

Crontab wird verwendet, um Benutzern die Ausführung von Programmen zu einem festen Zeitpunkt oder in einem festen Intervall zu ermöglichen.

Verwenden Sie Crontab, um Shell-Skripte zu schreiben, und lassen Sie PHP dann die Shell aufrufen. Dies nutzt die Eigenschaften von Linux und sollte PHP selbst nicht zählen . Funktionen der Sprache

Ausführen von Skripten mithilfe von URLs in Crontab

Wenn Ihr PHP-Skript per URL ausgelöst werden kann, können Sie Lynx oder Curl oder Wget verwenden, um Ihr Crontab zu konfigurieren.

Das folgende Beispiel verwendet den Lynx-Textbrowser, um auf eine URL zuzugreifen, um stündlich ein PHP-Skript auszuführen. Der Lynx-Textbrowser verwendet standardmäßig den Konversationsmodus zum Öffnen von URLs. Wie unten gezeigt, verwenden wir jedoch die Option -dump in der Lynx-Befehlszeile, um die URL-Ausgabe in die Standardausgabe umzuwandeln.

<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>
Das folgende Beispiel verwendet C

URL, um auf die URL zuzugreifen und alle 5 Minuten ein PHP-Skript auszuführen. Curl zeigt die Ausgabe standardmäßig auf der Standardausgabe an. Sie können die Ausgabe des Skripts auch mit der Option „curl -o“ in eine temporäre Datei sichern.

<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>
Das folgende Beispiel verwendet WGET, um auf die URL zuzugreifen, um alle 10 Minuten ein PHP-Skript auszuführen. Die Option -q gibt den Ruhemodus an. „-O temp.txt“ bedeutet, dass die Ausgabe an eine temporäre Datei gesendet wird.

<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>

Zusammenfassung:

Dieser Artikel ist ein Beispiel für PHP-Planungsaufgaben, die im Rahmen des tatsächlichen Projektentwicklungsprozesses implementiert werden Ihre Entwicklungsarbeit Es gibt etwas Hilfe!

Verwandte Empfehlungen:

Wie implementiert man die geplante Ausführung geplanter Aufgaben in PHP?


Prinzipielle Analyse der PHP-Implementierung geplanter Aufgaben


PHP implementiert geplante Aufgaben und kontinuierliche Prozessinstanzen fsockopen


PHP-geplante Aufgaben erkennen den Verbindungsstatus des Benutzers

Das obige ist der detaillierte Inhalt vonBeispielcode-Freigabe für geplante PHP-Aufgaben. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn