Heim Backend-Entwicklung PHP-Tutorial PHP 实现定时任务的几种方法对比

PHP 实现定时任务的几种方法对比

Jun 20, 2016 pm 01:02 PM
crontab

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);
Nach dem Login kopieren

缺点: 启动之后,便无法控制, 除非终止 PHP 宿主. 不要采用这样方法, 除非你是黑客.

二. 简单可控型

   config.php

return 1;<!--?php
return 1;
?-->
Nach dem Login kopieren

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);
Nach dem Login kopieren

 

  通过 改变config.php 的 return 0 , 来实现停止程序. 一个可行的办法是config.php文件和某个特殊表单交互, 通过HTML页面设置一些变量来进行配置

缺点: 占系统资源, 长时间运行,会有一些意想不到的隐患。比如内存管理方面的问题 .

三. 简单改进型

$time=15;
$url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
/*
    function
*/
sleep($time);
file_get_contents($url);
Nach dem Login kopieren

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>
Nach dem Login kopieren

程序中通过 popen 来判断运行进程的数量,来控制并发

五.采用 BAE或者sae上的 cron 服务来做.

六.买个vps,用crontab


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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Kennen Sie einige Gründe, warum geplante Crontab-Aufgaben nicht ausgeführt werden? Kennen Sie einige Gründe, warum geplante Crontab-Aufgaben nicht ausgeführt werden? Mar 09, 2024 am 09:49 AM

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 Linux-Systemen zu implementieren So verwenden Sie Systemd und Crontab, um die parallele Ausführung von Aufgaben in Linux-Systemen zu implementieren Sep 26, 2023 pm 06:37 PM

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

So lösen Sie die Fallstricke beim Kommentieren von Crontab-Dateien und beim Ausführen von sh durch Crontab unter Linux So lösen Sie die Fallstricke beim Kommentieren von Crontab-Dateien und beim Ausführen von sh durch Crontab unter Linux May 15, 2023 pm 09:58 PM

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 lesen Sie das Linux-Crontab-Fehlerprotokoll So lesen Sie das Linux-Crontab-Fehlerprotokoll Mar 07, 2023 am 09:29 AM

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 starten Sie Anwendungen unter Linux mithilfe von Systemd und Crontab automatisch neu So starten Sie Anwendungen unter Linux mithilfe von Systemd und Crontab automatisch neu Sep 28, 2023 pm 03:35 PM

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

So verwenden Sie Systemd und Crontab, um die Priorität geplanter Aufgaben im Linux-System festzulegen So verwenden Sie Systemd und Crontab, um die Priorität geplanter Aufgaben im Linux-System festzulegen Sep 27, 2023 am 08:25 AM

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 einem Linux-System zu realisieren So verwenden Sie Systemd und Crontab, um den Selbststart des Systems in einem Linux-System zu realisieren Sep 26, 2023 am 11:57 AM

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 implementieren Sie Aufgabenabhängigkeiten in Linux-Systemen mithilfe von Systemd und Crontab So implementieren Sie Aufgabenabhängigkeiten in Linux-Systemen mithilfe von Systemd und Crontab Sep 27, 2023 pm 08:13 PM

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

See all articles