ループを止めないで作成する方法 既に実行している場合はもう一度実行しないでください。実行中のスクリプトがデータベースの最後のcron時間を更新し、時間 - 40秒は最後のcron時間よりも短くなります。私が何をしているかのサンプルですが、それはオーバールーピングです(何度も繰り返し実行しています)ありがとう!PHPスクリプトがすでに実行されているかどうかを確認する方法
<?php
ignore_user_abort(1); // run script in background
set_time_limit(0); // set limit to 0
function processing()
{
//some function here
setting::write('cron_last_time', $time); // write cron last time to database
}
$time = current_timestamp(); // current time
$time_before = $time - 20; //
$settings = setting::read('module_cron_email'); // Get last cron time from database (in array)
$time_last = $settings['setting_value']; // Last cron time get value from array
if ($time_before < $time_last) // check if time before is less than last cron time
{
do{
processing(); //run our function
sleep(7); // pause for 7 seconds
continue; // continue
}
while(true); // loop
}else{
echo "already running";
die();
}
?>
「ロックファイル」には、別のスクリプトの実行をロックしているだけの古いファイルを使用できます。以前実行していたスクリプトが終了すると、クリーンアップ手順の一部としてロックファイルが削除されます。 – Lix
あなたは正しいですが、プロセスが終了したらどうなりますか?それは再び実行されませんので、私はこのようにしようとしている理由です –
終了によって何を意味するのですか?私はあなたのスクリプトが終了した後にファイルを削除する必要があることを言及することを忘れてしまった。 – Ahatius