[英]Run Cron only if the script is not running
我有一個PHP腳本,該腳本一旦運行,它將檢查數據庫,然后運行一些URL循環(使用CURL刮擦站點)。 我希望該腳本每天24小時運行。 我目前每10分鍾使用cPanel的cron,但問題是,有時腳本需要花費10多分鍾,而cron試圖再次打開,這造成了很大的沖突。
我想要的是某種PHP服務或cron腳本,以僅在腳本未運行時運行該腳本。
您可以使用數據庫字段來控制抓取時間間隔並分配抓取狀態(例如“活動”,“完成”等),還可以使用鎖定文件,如下所示:
<pre>
// define name for lock
$lock_name = "/location/on/server/imworking.loc";
// exit script if lock file exists
if( is_file( $lock_name ) ) exit ( 'Lock file exists, lets exit here! );
// create new lock file before doing your things
$lock_file = fopen( $lock_name, "w" );
fwrite($lock_file , "working"); //this isn't really needed..
fclose($lock_file);
// do your stuff here, you can use try / catch statements as
// errors may prevent deleting lock file and so starting script again
//your stuff finished so let's remove lock file
unlink('/location/on/server/imworking.loc');
</pre>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.