/**
* 确保只有一个实例在运行
* @param int $lock 锁文件路径
* @return resource 锁文件句柄
*/
function run_single_instance($lock)
{
//打开文件(不存在创建,存在以写入方式打开,指针位于文件头,)
$fh = fopen($lock, 'c');
if (!$fh) {
exit(1);
}
//尝试上锁
if (!flock($fh, LOCK_EX | LOCK_NB)) {
exit(0);
}
//截断文件
ftruncate($fh, 0);
//写入进程ID
fwrite($fh, getmypid());
fflush($fh);
//返回
return $fh;
}