ignore_user_abort(); // 関数の設定がクライアントから切断されるとスクリプトの実行が終了します
set_time_limit(0) // set_time_limit(0) により、プログラムは無制限に実行できます
$interval= 5; // 5 秒ごとに実行
do{
$fp = @fopen("test.txt", "a+");
fwrite($fp, date("Y-m-d H:i:s"); . " PHP を定期的に実行しましょう! n");
fclose($fp);// 5 秒待ちます
// スケジュールされたタスクの終了条件を設定します
if (file_exists('lock.txt') )
{
Break;
}
}while(true);
たとえば、このようなスケジュールされた実行タスクが実装されます。しかし、このページを複数回呼び出すと、複数のタスクが開始されてしまうという問題があります。この状況に対処する方法について専門家のアドバイスはありますか?
ディスカッションへの返信 (解決策)
if(php_sapi_name() == 'cli'){ // サーバー側でのみ実行可能
// メインコード部分
}
または、ファイルを html ディレクトリの外に置く
cronこのファイルを定期的に実行します (1 分ごとに 1 回実行されます)。 * * * * * php /var/user/admin/scriptname.php >/dev/null 2>&1
set_time_limit(60)
// メインコード部分
;
スケジュールされたタスク管理テーブルを追加して、実行中またはすでに実行されていることを示し、さまざまな状況に応じてタスクを実行するかどうかを決定できます