使用するcron + PHPスクリプトモニターのバックグラウンドタスクスクリプト

task1.php

<?phpののerror_reportingE_ERROR | E_WARNING | E_PARSE )。
// Redisの
$のRedis = 新しいRedisの();
$ Redisの - > pconnect(REDIS_HOST、REDIS_PORT)。
$ Redisの - > AUTH(REDIS_PASS)。
// タスク
){
     $タスク = $のRedis - > RPOP( 'mytask1' );
    場合$タスク!== falseの){
         //はTODO 
        続けます
    } 
    睡眠(1); 
}
?>

 

task_monitor.php

<PHP?するerror_reportingE_ERROR | E_WARNING | E_PARSEを);
 // タスクの配列
$タスク = アレイ 'task1.php'、
    'task2.php'、
    'task3.php'、
    'task4.php'、
    'task5.php' 
    ); 
// 実行中のタスクの検索
$ CMD = "PS -ef | grepの'タスク'を" ;
 $ RES = もしくはshell_exec$ cmdを);
 $すべては = 爆発、 "\ N-"($ RES ;)
 $ランニング = アレイ();
以下のための私は$ = 0; 私は$ < $すべて)。私は$ ++ ){
     $配列は = 爆発、( "PHPを" $すべて [ $ I )]。
    $ P = トリム$配列 [1 ])。
    もし(!$ P )){
         $ P = str_replace( '/ MYTASK /'、 ''、$ P );
        実行している$ [] = $ P ; 
    } 
} 
エコー日付( 'はYmd H:I:S')。 "\ n"は);
 $のDATE = DATE( 'YmdHis' );
 //は、タスクが実行されていない見つけ、タスクを開始
するために$ I = 0; $ I < COUNT$タスク); $ I ++ ){
     IFin_array$タスク [ $ I ]、$ランニング)){
         エコー$タスク [ $ I "実行されている\ N-"。] ); 
    } {
         エコー$タスク [ $ I。] "デッドは\ N-" );
        $ CMD = "nohupはは/ usr / bin / php / MYTASK /"。$タスク [ $ I ] "> /mytask/nohup/mytask.log 2>&1&"。;
        $ RES = もしくはshell_exec$ CMD )。
    }
}
エコー( "\ n");
?>

 

おすすめ

転載: www.cnblogs.com/coffee_cn/p/12101382.html