强制PHP命令行脚本单进程运行的方法
代码如下:
/** * 保证单进程 * * @param string $processName 进程名 * @param string $pidFile 进程文件路径 * @return boolean 是否继续执行当前进程 */ function singleProcess($processName, $pidFile) { if (file_exists($pidFile) && $fp = @fopen($pidFile,"rb")) { flock($fp, LOCK_SH); $last_pid = fread($fp, filesize($pidFile)); fclose($fp); if (!empty($last_pid)) { $command = exec("/bin/ps -p $last_pid -o command="); if ($command == $processName) { return false; } } } $cur_pid = posix_getpid(); if ($fp = @fopen($pidFile, "wb")) { fputs($fp, $cur_pid); ftruncate($fp, strlen($cur_pid)); fclose($fp); return true; } else { return false; } } /** * 获取当前进程对应的Command * * @return string 命令及其参数 */ function getCurrentCommand() { $pid = posix_getpid(); $command = exec("/bin/ps -p $pid -o command="); return $command; }
使用方法:
代码如下:
if (singleProcess(getCurrentCommand(), 'path/to/script.pid')) { // code goes here } else { exit("Sorry, this script file has already been running ...\n"); }
相关推荐
吹云 2020-11-05
84407805 2020-11-01
曾是土木人 2020-10-31
87201442 2020-10-15
java0 2020-09-29
81437716 2020-09-18
81437716 2020-09-13
bluecarrot 2020-09-11
myCat 2020-09-09
83427718 2020-09-07
85560694 2020-09-03
89520991 2020-08-21
89550191 2020-08-09
katie000 2020-08-04
hunningtu 2020-07-30
89961330 2020-07-28
yuzhongdelei0 2020-07-28