强制PHP命令行脚本单进程运行的方法
2015-01-24信息快讯网
本文介绍了一个强制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高级编程实例:编写守护进程
PHP命令行脚本接收传入参数的三种方式
单台服务器的PHP进程之间实现共享内存的方法
在PHP中运行Linux命令并启动SSH服务的例子
php定时计划任务与fsockopen持续进程实例
yii框架通过控制台命令创建定时任务示例
PHP中批量生成静态html(命令行下运行PHP)
php sybase_fetch_array使用方法
用PHP和Shell写Hadoop的MapReduce程序
php命令行使用方法和命令行参数说明
php设计模式之命令模式使用示例
php使用多个进程同时控制文件读写示例
memcache命令启动参数中文解释
PHP运行SVN命令显示某用户的文件更新记录的代码
php使用exec shell命令注入的方法讲解
PHP输出当前进程所有变量/常量/模块/函数/类的示例