强制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输出当前进程所有变量/常量/模块/函数/类的示例