Heim >Backend-Entwicklung >PHP-Tutorial >Mehrere Möglichkeiten, geplante Aufgaben in PHP zu implementieren
Dieser Artikel stellt Ihnen hauptsächlich verschiedene Möglichkeiten zur Implementierung geplanter Aufgaben in PHP vor. Ich hoffe, dass er Ihnen helfen kann.
<?php ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行. set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去 ini_set('memory_limit','512M'); // 设置内存限制 $interval=60*30;// 每隔半小时运行 do{ //ToDo sleep($interval);// 等待5分钟 } while(true);
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
config.php
<?php return 1; ?>
cron.php
ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行. set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去 $interval=60*30;// 每隔半小时运行 do{ $run = include 'config.php'; if(!$run) die('process abort'); //ToDo sleep($interval);// 等待5分钟 } while(true);
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.
<?php $time=15; $url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; /* function */ sleep($time); file_get_contents($url); ?>
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
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.
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
/usr/local/bin/php ist der Pfad des PHP-Programms.
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
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
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
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)
Nicht alle Parameter können konfiguriert werden, Sie können die Liste im Handbuch einsehen.
Allgemeine Einstellungen:
@ ini_set('memory_limit', '64M');
menory_limit:设定一个脚本所能够申请到的最大内存字节数,这有利于写的不好的脚本消耗服务器上的可用内存。@符号代表不输出错误。
@ini_set('display_errors', 1);
display_errors:设置错误信息的类别。
@ini_set('session.auto_start', 0);
session.auto_start:是否自动开session处理,设置为1时,程序中不用session_start()来手动开启session也可使用session,
如果参数为0,又没手动开启session,则会报错。
@ini_set('session.cache_expire', 180);
session.cache_expire:指定会话页面在客户端cache中的有限期(分钟)缺省下为180分钟。如果设置了session.cache_limiter=nocache时,此处设置无 效。
@ini_set('session.use_cookies', 1);
session.use_cookies:是否使用cookie在客户端保存会话ID;
@ini_set('session.use_trans_sid', 0);
session.use_trans_sid:是否使用明码在URL中显示SID(会话ID),
默认是禁止的,因为它会给你用户带来安全危险:
用户可能将包含有效的sid的URL通过email/irc/QQ/MSN等途径告诉其他人。
包含有效sid的URL可能会保存在公用电脑上。
用户可能保存带有固定不变的SID的URL在他们的收藏夹或者浏览历史记录里。 基于URL的会话管理总是比基于Cookie的会话管理有更多的风险,所以应当禁用。
相关推荐:
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!