下記のコマンドが実行中であるかどうかを確認しているので、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");
。 'ps'チェックをしてから' exec'を行うまでの間に、あるユーザーが別のユーザーの背後でスクリプトを起動できないという保証はありません。ロックファイルを使用します。それが彼らのために設計されたものです。 http://php.net/flock –
@MarcBありがとうございました.D – Devilion