PHP 实现定时任务的几种方法对比
PHP 实现定时任务的几种方法
这几天需要用PHP写一个定时抓取网页的服务器应用. 在网上搜了一下解决办法, 发现OSchina的 一个问题的解答很精彩
提出几种解决办法.现总结如下.
一. 简单直接不顾后果型
ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行. set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去 $interval=60*30;// 每隔半小时运行 do{ //ToDo sleep($interval);// 等待5分钟 }while(true);
缺点: 启动之后,便无法控制, 除非终止 PHP 宿主. 不要采用这样方法, 除非你是黑客.
二. 简单可控型
config.php
return 1;<!--?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);
通过 改变config.php 的 return 0 , 来实现停止程序. 一个可行的办法是config.php文件和某个特殊表单交互, 通过HTML页面设置一些变量来进行配置
缺点: 占系统资源, 长时间运行,会有一些意想不到的隐患。比如内存管理方面的问题 .
三. 简单改进型
$time=15; $url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; /* function */ sleep($time); file_get_contents($url);
php脚本sleep 一段时间之后通过访问自身的方式继续执行. 就好像接力赛跑一样..这样就能保证每个PHP脚本执行时间不会太长. 也就不受time_out的限制了.
因为每一次一次循环php文件都是独立执行,所以这种方法,避免了time_out的限制. 但是最好和上边一样 加上控制代码. cofig.php , 以便能够终止进程.
四. cronTab 型
cControlJobNum(1); while (true) { <your code> } function cControlJobNum($job_limit) { $cmd = @popen("ps -ef | grep '{$_SERVER['SCRIPT_FILENAME']}' | grep -v grep | wc -l", 'r'); $num = @fread($cmd, 512); $num += 0; @pclose($cmd); if($num > $job_limit) { exit; } return true; }</your>
程序中通过 popen 来判断运行进程的数量,来控制并发
五.采用 BAE或者sae上的 cron 服务来做.
六.买个vps,用crontab

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Zusammenfassung einiger Gründe, warum geplante Crontab-Aufgaben nicht ausgeführt werden: 9. Januar 2019, 09:34:57 Uhr Autor: Hope on the Field In diesem Artikel werden hauptsächlich einige Gründe zusammengefasst, warum geplante Crontab-Aufgaben nicht ausgeführt werden Für jeden der möglichen Auslöser werden Lösungen angegeben, die für Kollegen, die auf dieses Problem stoßen, einen gewissen Referenz- und Lernwert haben. Vorwort: Ich bin kürzlich auf einige Probleme bei der Arbeit gestoßen Die Aufgabe wurde nicht ausgeführt. Als ich später im Internet suchte, stellte ich fest, dass im Internet hauptsächlich diese fünf Anreize erwähnt wurden: 1. Der Crond-Dienst ist keine Funktion des Linux-Kernels, sondern basiert auf einem Cron.

So verwenden Sie Systemd und Crontab, um die parallele Ausführung von Aufgaben in einem Linux-System zu implementieren. In einem Linux-System ist die parallele Ausführung von Aufgaben eines der wichtigen Mittel zur Verbesserung der Systemeffizienz und -leistung. In diesem Artikel wird erläutert, wie Sie die Tools Systemd und Crontab verwenden, um die parallele Ausführung von Aufgaben in einem Linux-System zu implementieren, und es werden spezifische Codebeispiele bereitgestellt. 1. Einführung in Systemd Systemd ist ein Tool zur Verwaltung des Startvorgangs und der Dienstverwaltung von Linux-Systemen. über die Konfiguration

Die Fallstricke beim Kommentieren von Crontab-Dateien und beim Ausführen von Crontabs unter Linux. Es stellt sich heraus, dass es folgende Anforderungen gibt: Es ist notwendig, bestimmte Crontab-Aufgaben mit Anmerkungen zu versehen. Fügen Sie einfach die abzubrechende Crontab hinzu. Fügen Sie einfach „#“ vor der Aufgabe hinzu. z.B.54**sunecho"runat5after4everysunday"Kommentar: #54**sunecho"runat5after4everysunday"So einfach ist das. Begegnungsgrube 1, schauen Sie sich kürzlich das folgende Beispiel an

So zeigen Sie das Crontab-Fehlerprotokoll unter Linux an: 1. Sehen Sie sich das Dateiverzeichnis „/var/log/cron“ an. 2. Verwenden Sie den Befehl „tail -f /var/log/cron“, um das Ende der Datei in Echtzeit anzuzeigen 3. Der Befehl „vim /var /log/cron“ kann über einen erweiterten Textbetrachter angezeigt werden.

So verwenden Sie Systemd und Crontab zum automatischen Neustart von Anwendungen in Linux-Systemen. In Linux-Systemen sind Systemd und Crontab zwei sehr wichtige Tools. Systemd ist ein System- und Dienstmanager, während Crontab ein Tool zur Automatisierung von Aufgaben zu bestimmten Zeiten ist. In diesem Artikel wird anhand eines konkreten Beispiels erläutert, wie Sie mithilfe von Systemd und Crontab Anwendungen in Linux-Systemen automatisch neu starten. Angenommen, wir haben ein Nein

Für die Verwendung von Systemd und Crontab zum Festlegen der Priorität geplanter Aufgaben in einem Linux-System sind bestimmte Codebeispiele erforderlich. In Linux-Systemen müssen wir häufig geplante Aufgaben einrichten, um einige sich wiederholende Vorgänge auszuführen, z. B. geplante Sicherungsdateien, regelmäßige Protokollbereinigung usw. usw. Verschiedene Aufgaben können jedoch unterschiedliche Prioritäten haben. Einige Aufgaben erfordern eine höhere Priorität, um sicherzustellen, dass sie pünktlich ausgeführt werden, während andere Aufgaben später ausgeführt werden können. In diesem Artikel wird erläutert, wie Sie Systemd und Crontab zum Festlegen von Zeitvorgaben verwenden

So verwenden Sie Systemd und Crontab, um den Selbststart des Systems in Linux-Systemen zu implementieren. Einführung: In Linux-Systemen müssen wir häufig einige häufig verwendete Dienste oder Skripte auf Selbststart des Systems einstellen, damit sie nach dem Neustart des Systems automatisch ausgeführt werden können. In diesem Artikel stellen wir vor, wie Sie mit den beiden Tools Systemd und Crontab den Selbststart des Systems realisieren, und geben konkrete Codebeispiele. 1. Die Verwendung von Systemd Systemd ist eine häufig verwendete System- und Dienstverwaltung in Linux-Betriebssystemen.

So verwenden Sie Systemd und Crontab zum Implementieren von Aufgabenabhängigkeiten in Linux-Systemen. Einführung: In Linux-Systemen ist die Aufgabenplanung ein sehr wichtiger Teil, der sicherstellen kann, dass jede Aufgabe gemäß der geplanten Zeit und Reihenfolge ausgeführt wird. Systemd und Crontab sind zwei häufig verwendete Tools zur Aufgabenplanung und eignen sich für unterschiedliche Szenarien. In diesem Artikel wird erläutert, wie Sie mit Systemd und Crontab Aufgabenabhängigkeiten implementieren, und es werden spezifische Codebeispiele bereitgestellt. 1. Systemd
