千家信息网

怎么强制PHP命令行脚本单进程运行

发表于:2025-01-16 作者:千家信息网编辑
千家信息网最后更新 2025年01月16日,这篇文章主要介绍"怎么强制PHP命令行脚本单进程运行",在日常操作中,相信很多人在怎么强制PHP命令行脚本单进程运行问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎么强
千家信息网最后更新 2025年01月16日怎么强制PHP命令行脚本单进程运行

这篇文章主要介绍"怎么强制PHP命令行脚本单进程运行",在日常操作中,相信很多人在怎么强制PHP命令行脚本单进程运行问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎么强制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");
}

到此,关于"怎么强制PHP命令行脚本单进程运行"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

0