2016-08-22 8 views
0

下記のコマンドが実行中であるかどうかを確認しているので、2番目のユーザは2人のユーザで作業しますが、最初のものが実行され、それが終了した後、2番目と3番目のユーザーが同じ時間にそれを実行するので、 "ps axf"を実行した後、2人のユーザーの2つのコマンドが見つかります。非常に信頼性がないのですコマンドが複数のユーザでプロセス中で実行されているかどうかをチェックするphp

do { 
$ps = shell_exec("ps axf"); 
$res = preg_match("#/usr/bin/php /var/www/html/checker/checker.php $time#",$ps); 
usleep(100000); 
} while ($res); 

$res = shell_exec("/usr/bin/php /var/www/html/checker/checker.php $time"); 
+3

。 'ps'チェックをしてから' exec'を行うまでの間に、あるユーザーが別のユーザーの背後でスクリプトを起動できないという保証はありません。ロックファイルを使用します。それが彼らのために設計されたものです。 http://php.net/flock –

+0

@MarcBありがとうございました.D – Devilion

答えて

0
$psCommand = "ps -eo pid,lstart,etime,args | grep 'filepath' | grep 'user' | grep -v /bin/sh | grep -v grep"; 

$command = exec($psCommand, $output); 

foreach ($output as $arrayValue) { 
    echo $output; 
} 
+0

このコードは問題を解決するのに役立つかもしれませんが、なぜ、そして/またはどのように質問に答えるか説明しません。この追加の文脈を提供することは、長期的な価値を大幅に改善することになる。どのような制限や前提が適用されるかなど、説明を追加するためにあなたの答えを編集してください。 – jmattheis

関連する問題