Heim > Backend-Entwicklung > PHP-Tutorial > Mehrere Möglichkeiten, geplante Aufgaben in PHP zu implementieren

Mehrere Möglichkeiten, geplante Aufgaben in PHP zu implementieren

小云云
Freigeben: 2023-03-22 20:34:01
Original
12755 Leute haben es durchsucht

Dieser Artikel stellt Ihnen hauptsächlich verschiedene Möglichkeiten zur Implementierung geplanter Aufgaben in PHP vor. Ich hoffe, dass er Ihnen helfen kann.

1. Einfacher, direkter und rücksichtsloser Typ

  1. <?php  
    ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.  
    set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去  
    ini_set(&#39;memory_limit&#39;,&#39;512M&#39;); // 设置内存限制  
    $interval=60*30;// 每隔半小时运行  
    do{  
        //ToDo   
        sleep($interval);// 等待5分钟  
    }  
    while(true);
    Nach dem Login kopieren

Nachteile: Einmal gestartet, kann es nicht kontrolliert werden, es sei denn, der PHP-Host wird beendet . Verwenden Sie diese Methode nicht, es sei denn, Sie sind ein Hacker.

Empfohlene verwandte Artikel:
1.Wie implementiert man geplante Aufgaben in PHP?
2.Anleitung für den PHP-Timer
Verwandte Videoempfehlungen:
1.Dugu Jiujian (4)_PHP-Video-Tutorial

2. Einfach und kontrollierbar

config.php

  1. <?php  
    return 1;  
    ?>
    Nach dem Login kopieren

cron.php

  1. ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.  
    set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去  
    $interval=60*30;// 每隔半小时运行  
    do{  
        $run = include &#39;config.php&#39;;  
        if(!$run) die(&#39;process abort&#39;);  
          
        //ToDo  
        sleep($interval);// 等待5分钟  
    }  
    while(true);
    Nach dem Login kopieren

Stoppen Sie das Programm, indem Sie die Rückgabe 0 in config.php ändern. Eine praktikable Möglichkeit besteht darin, mit der Datei config.php und einem speziellen Formular zu interagieren und einige Einstellungen über die HTML-Seite festzulegen Für die Konfiguration werden Variablen verwendet

Nachteile: Es beansprucht Systemressourcen und läuft lange, was zu unerwarteten versteckten Gefahren führen kann. Zum Beispiel Speicherverwaltungsprobleme.

3. Einfache verbesserte Version

  1. <?php  
    $time=15;  
    $url="http://".$_SERVER[&#39;HTTP_HOST&#39;].$_SERVER[&#39;REQUEST_URI&#39;];  
    /* 
        function 
    */  
    sleep($time);  
    file_get_contents($url);  
    ?>
    Nach dem Login kopieren

Das PHP-Skript schläft, indem es nach einer gewissen Zeit auf sich selbst zugreift Zeit Fortsetzung der Ausführung. Dies stellt sicher, dass die Ausführungszeit jedes PHP-Skripts nicht zu lang ist.

Da dies bei jeder Schleife der Fall ist Unabhängige Ausführung, daher vermeidet diese Methode die Einschränkung von time_out. Es ist jedoch am besten, den Steuercode wie oben hinzuzufügen, damit der Prozess beendet werden kann

4. Vom Server geplante Aufgaben

Unix-Plattform

Wenn Sie ein Unix-System verwenden, müssen Sie am Anfang Ihres PHP-Skripts eine spezielle Codezeile hinzufügen, damit es ausgeführt werden kann, damit das System wissen kann, was für ein Programm, mit dem das Skript ausgeführt werden soll. Die für Unix-Systeme hinzugefügte erste Codezeile hat keinen Einfluss auf die Ausführung des Skripts unter Windows, sodass Sie diese Methode auch zum Schreiben plattformübergreifender Skripte verwenden können.

1. Verwenden Sie PHP, um das Skript in Crontab auszuführen

Verwenden Sie genau wie beim Aufrufen eines gewöhnlichen Shell-Skripts in Crontab (spezifische Crontab-Verwendung) das PHP-Programm, um das PHP-Skript aufzurufen und jedes Mal auszuführen Stunde myscript.php lautet wie folgt:

# crontab -e
00 * * * * /usr/local/bin/php /home/john/myscript.php
Nach dem Login kopieren

/usr/local/bin/php ist der Pfad des PHP-Programms.

2. Verwenden Sie eine URL, um Skripte in Crontab auszuführen.

Wenn Ihr PHP-Skript per URL ausgelöst werden kann, können Sie Ihr Crontab mit Lynx, Curl oder Wget 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.

00 * * * * lynx -dump http://www.sf.net/myscript.php
Nach dem Login kopieren

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

*/5 * * * * /usr/bin/curl -o temp.txt http://www.sf.net/myscript.php
Nach dem Login kopieren

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.

*/10 * * * * /usr/bin/wget -q -O temp.txt http://www.sf.net/myscript.php
Nach dem Login kopieren

5. Detaillierte Erläuterung der Verwendung der ini_set-Funktion

PHP ini_set wird verwendet, um den Wert von php.ini festzulegen, der wirksam wird, wenn die Funktion ausgeführt wird. die Einstellung wird ungültig. Sie können die Konfiguration ändern, ohne die Datei php.ini zu öffnen, was für virtuelle Räume sehr praktisch ist.

Funktionsformat:

string ini_set(string $varname, string $newvalue)
Nach dem Login kopieren

Nicht alle Parameter können konfiguriert werden, Sie können die Liste im Handbuch einsehen.

Allgemeine Einstellungen:

@ ini_set(&#39;memory_limit&#39;, &#39;64M&#39;);
Nach dem Login kopieren

menory_limit:设定一个脚本所能够申请到的最大内存字节数,这有利于写的不好的脚本消耗服务器上的可用内存。@符号代表不输出错误。

@ini_set(&#39;display_errors&#39;, 1);
Nach dem Login kopieren

display_errors:设置错误信息的类别。

@ini_set(&#39;session.auto_start&#39;, 0);
Nach dem Login kopieren

session.auto_start:是否自动开session处理,设置为1时,程序中不用session_start()来手动开启session也可使用session,

如果参数为0,又没手动开启session,则会报错。

@ini_set(&#39;session.cache_expire&#39;, 180);
Nach dem Login kopieren

session.cache_expire:指定会话页面在客户端cache中的有限期(分钟)缺省下为180分钟。如果设置了session.cache_limiter=nocache时,此处设置无 效。

@ini_set(&#39;session.use_cookies&#39;, 1);
Nach dem Login kopieren

session.use_cookies:是否使用cookie在客户端保存会话ID;

@ini_set(&#39;session.use_trans_sid&#39;, 0);
Nach dem Login kopieren

session.use_trans_sid:是否使用明码在URL中显示SID(会话ID),

默认是禁止的,因为它会给你用户带来安全危险:

  1. 用户可能将包含有效的sid的URL通过email/irc/QQ/MSN等途径告诉其他人。

  2. 包含有效sid的URL可能会保存在公用电脑上。

  3. 用户可能保存带有固定不变的SID的URL在他们的收藏夹或者浏览历史记录里。 基于URL的会话管理总是比基于Cookie的会话管理有更多的风险,所以应当禁用。

相关推荐:

PHP结合Linux的cron命令实现定时任务实例

Linux定时任务Crontab命令详解

PHP执行定时任务的几种方法思路

Das obige ist der detaillierte Inhalt vonMehrere Möglichkeiten, geplante Aufgaben in PHP zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage