Heim  >  Artikel  >  Backend-Entwicklung  >  Lassen Sie uns darüber sprechen, wie Sie geplante Aufgaben in PHP implementieren

Lassen Sie uns darüber sprechen, wie Sie geplante Aufgaben in PHP implementieren

巴扎黑
巴扎黑Original
2016-11-29 11:45:041801Durchsuche

Dieser Artikel führt Sie in den Inhalt geplanter PHP-Aufgaben ein. Ich hoffe, er wird Ihnen hilfreich sein!

Lassen Sie uns darüber sprechen, wie Sie geplante Aufgaben in PHP implementieren

(1) Das Programm muss nur einmal gestartet werden, nachdem die geplanten Aufgaben festgelegt wurden, und dann läuft das Programm weiter, bis der Server neu gestartet wird

(2) Wenn es wiederholt ausgeführt wird, ist es möglicherweise nicht das gewünschte Ergebnis. In diesem Fall werden mehrere identische geplante Aufgaben gestartet

(3) Wenn jede Seite diese Seite enthält, werden mehrere dauerhaft ausgeführt Programme werden gestartet und verbrauchen unnötige Systemressourcen.

wirkt sich auch auf den normalen Zugriff auf die Seite aus. Wenn sie im Vordergrund steht, wartet die Seite beim Zugriff immer auf die Rückkehr (das ist eine Endlosschleife).

<?php 
ignore_user_abort(true); //即使Client断开(如关掉浏览器),PHP脚本也可以继续执行. 
set_time_limit(0); // 执行时间为无限制,php默认的执行时间是30秒,通过set_time_limit(0)可以让程序无限制的执行下去 
$interval=60*5; // 每隔5分钟运行
$f = &#39;lock.txt&#39;;
if(file_exists($f)){ //判断标记文件是否存在,存在就退出,防止重复运行
    exit();
}
do{
    if(@get_file_contents($f) == &#39;stop&#39;){ //设置停止条件, 停止的时候只要向 lock.txt 写入 stop
        break;
    }
    @file_put_contents($f,&#39;run&#39;);//重复写入一个文件,标志已经运行计划任务
    ....省略任务代码
    sleep($interval);//程序暂停5分钟
}while(true);
@unlock($f); //删除标记文件
?>

Dies ist nur eine Möglichkeit, es mit Code zu implementieren. Eine andere Möglichkeit besteht darin, den PHP-CLI-Modus zu verwenden, um geplante Aufgaben zu implementieren.

Verwenden Sie beispielsweise run->cmd

, um php.exe unter dem Fenster auszuführen, drücken Sie dann AT und geben Sie entsprechend den Anforderungen ein.

Verschiedene Systeme haben unterschiedliche Methoden, und Linux ist unterschiedlich.

Es wurde nicht konkret umgesetzt, ist aber durchaus möglich.

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