强制PHP命令行脚本单进程运行的方法


Posted in PHP onApril 15, 2014
 /**
  * 保证单进程
  *
  * @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源码之 ext/mysql扩展部分
Jul 17 PHP
php Smarty 字符比较代码
Feb 27 PHP
PHP中读写文件实现代码
Oct 20 PHP
php中http_build_query 的一个问题
Mar 25 PHP
注册页面之前先验证用户名是否存在的php代码
Jul 14 PHP
php使用glob函数快速查询指定目录文件的方法
Nov 15 PHP
php支付宝手机网页支付类实例
Mar 04 PHP
php里array_work用法实例分析
Jul 13 PHP
搭建Vim为自定义的PHP开发工具的一些技巧
Dec 11 PHP
thinkphp3.x中变量的获取和过滤方法详解
May 20 PHP
php实现当前页面点击下载文件的实例代码
Nov 16 PHP
PHP实现数组转JSon和JSon转数组的方法示例
Jun 14 PHP
用PHP和Shell写Hadoop的MapReduce程序
Apr 15 #PHP
php获取mysql字段名称和其它信息的例子
Apr 14 #PHP
PHP检测移动设备类mobile detection使用实例
Apr 14 #PHP
PHP删除数组中空值的方法介绍
Apr 14 #PHP
PHP批量删除、清除UTF-8文件BOM头的代码实例
Apr 14 #PHP
thinkphp实现数组分页示例
Apr 13 #PHP
不使用php api函数实现数组的交换排序示例
Apr 13 #PHP
You might like
利用PHP创建动态图像
2006/10/09 PHP
php遍历目录viewDir函数
2009/12/15 PHP
PHP中将网页导出为Word文档的代码
2012/05/25 PHP
php number_format() 函数通过千位分组来格式化数字的实现代码
2013/08/06 PHP
PHP实现事件机制实例分析
2015/06/26 PHP
php微信高级接口群发 多客服
2016/06/23 PHP
基于jquery的划词搜索实现(备忘)
2010/09/14 Javascript
javascript定时保存表单数据的代码
2011/03/17 Javascript
JS图片自动轮换效果实现思路附截图
2014/04/30 Javascript
js实现页面a向页面b传参的方法
2016/05/29 Javascript
jQuery表单事件实例代码分享
2016/08/18 Javascript
AngularJS入门教程之路由与多视图详解
2016/08/19 Javascript
xcode中获取js文件的路径方法(推荐)
2016/11/05 Javascript
JQuery validate 验证一个单独的表单元素实例
2017/02/17 Javascript
JS实现的自动打字效果示例
2017/03/10 Javascript
ES6新特性之Symbol类型用法分析
2017/03/31 Javascript
Webpack 之 babel-loader文件预处理器详解
2018/03/23 Javascript
Javascript Web Worker使用过程解析
2020/03/16 Javascript
JavaScript setTimeout()基本用法有哪些
2020/11/04 Javascript
值得收藏的10道python 面试题
2019/04/15 Python
python绘制彩虹图
2019/12/16 Python
numba提升python运行速度的实例方法
2021/01/25 Python
CSS3对图片照片进行边缘模糊处理的实现
2018/08/08 HTML / CSS
HTML5 虚拟键盘出现挡住输入框的解决办法
2017/02/14 HTML / CSS
医院后勤自我鉴定
2013/10/13 职场文书
大专毕业生自我鉴定
2013/11/21 职场文书
入党积极分子思想汇报范文
2014/01/05 职场文书
年终考核评语
2014/01/19 职场文书
三年级班级文化建设方案
2014/05/04 职场文书
服务承诺书格式
2014/05/21 职场文书
中文专业毕业生自荐信
2014/05/24 职场文书
2014年学生会工作总结范文
2014/11/07 职场文书
2015年学校减负工作总结
2015/05/19 职场文书
《颐和园》教学反思
2016/02/19 职场文书
阿里云Nginx配置https实现域名访问项目(图文教程)
2021/03/31 Servers
Li list-style-image 图片垂直居中实现方法
2023/05/21 HTML / CSS