ホームページ  >  記事  >  バックエンド開発  >  PHP でスケジュールされたタスクを実装する方法について話しましょう

PHP でスケジュールされたタスクを実装する方法について話しましょう

巴扎黑
巴扎黑オリジナル
2016-11-29 11:45:041844ブラウズ

この記事ではPHPのスケジュールタスクの内容を紹介しますので、お役に立てれば幸いです。

PHP でスケジュールされたタスクを実装する方法について話しましょう

(1) スケジュールされたタスクを設定した後、プログラムを一度起動するだけで、その後はサーバーが再起動されるまでプログラムは実行され続けます

(2) 繰り返し実行される場合、プログラムが正しく実行されない可能性があります。望む結果、その場合は開始されます 複数の同じスケジュールされたタスク

(3) 各ページにこのページが含まれている場合、複数の永続的に実行されるプログラムが開始され、不必要なシステム リソースを消費し、

、ページの通常のアクセスにも影響します、front に配置すると、ページはアクセス時に常に待機状態になります (つまり、無限ループになります)

<?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); //删除标记文件
?>

これは、コードで実装する 1 つの方法にすぎません。別の方法は、Php cli モードを使用して実装することです。スケジュールされたタスク

たとえば、ウィンドウの下で Run->cmd

を使用して php.exe を実行し、AT を押して、要件に応じて Enter キーを押します。システムごとに異なる方法があり、Linux も異なります。

具体的には実装されていませんが、間違いなく可能です。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。