【发布时间】:2010-06-26 15:59:16
【问题描述】:
我试图阻止我的 cron 脚本允许它并行运行。我需要它,以便如果当前没有执行它,脚本将被允许运行,直到它完成、脚本超时或发生异常。
我一直在尝试使用 PHP 的flock 函数来锁定文件,运行脚本然后释放锁。但是,看起来我仍然可以并行运行该脚本多次。我错过了什么吗?
顺便说一句,我正在使用 Mac 文件系统在 Mac OS X 上进行开发,也许这就是文件锁被忽略的原因?虽然 PHP 文档只关注 NTFS 文件系统?
// Construct cron lock file path
$cronLockFilePath = realpath(APPLICATION_PATH . '/locks/cron');
// Get cron lock file
$cronLockFile = fopen($cronLockFilePath, 'r');
// Lock cron lock file
if (flock($cronLockFile, LOCK_EX)) {
echo 'lock';
sleep(10);
} else {
echo 'no lock';
}
【问题讨论】:
标签: php