【发布时间】:2016-08-22 14:27:28
【问题描述】:
我正在检查以下命令是否正在运行,所以如果为真,则第二个用户在完成之前无法执行它,它与 2 个用户一起工作,但如果 3 个用户执行它,第一个用户将被执行并在它之后执行完成后,第二个和第三个用户同时执行,所以执行“ps axf”后,我发现2个用户的2个命令,解决办法是什么?
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");
【问题讨论】:
-
这非常不可靠。 NO 保证在执行
ps检查和exec'ing 脚本之间的时间间隔内,一个用户不能在另一个用户的背后启动您的脚本。使用锁定文件。这就是他们的设计目的。 php.net/flock -
@MarcB 谢谢兄弟它的工作:D
标签: php linux shell command-line