通过浏览器只有1个脚本的第一种方法(完美运行)
$monitor_pid = "/tmp/a.lock";
$fp = fopen( $monitor_pid, 'a+' );
if ( flock( $fp, LOCK_EX | LOCK_NB ) )
{
$pid = intval( trim( fgets( $fp ) ) );
//RUN CODE ONCE AT A TIME
fflush( $fp );
flock( $fp, LOCK_UN );
}
else
{
exit;
}
fclose( $fp );
第二个带有shell_exec的方法,该方法调用另一个脚本(不起作用)
<?php
shell_exec("php test.php");
?>
和test.php
$monitor_pid = "/tmp/a.lock";
$fp = fopen( $monitor_pid, 'a+' );
if ( flock( $fp, LOCK_EX | LOCK_NB ) )
{
$pid = intval( trim( fgets( $fp ) ) );
//RUN CODE ONCE AT A TIME
fflush( $fp );
flock( $fp, LOCK_UN );
}
else
{
exit;
}
fclose( $fp );
好像在第二种方法中一样,该过程并不关心我的锁。 为什么会这样呢? 还有其他选择吗?
谢谢