PHP创建单例后台进程的方法示例


Posted in PHP onMay 23, 2017

本文实例讲述了PHP创建单例后台进程的方法。分享给大家供大家参考,具体如下:

可以通过如下语句启动一个PHP后台进程:

$command = " php script.php ";
$pid = exec("nohup $command > /dev/null 2>&1 & echo $!");

nohup表示这个进程独立于创建的用户,可以以守护方式运行。

如果需要这个后台进程是单例运行的,那么可以通过下面的方法来记录/判断进程是否已运行

//query the database for process id
$query = "SELECT pid FROM `daemons` WHERE `pid` = '2013' LIMIT 1";
$result = mysql_query($query);
$pid = mysql_result($result, 0, 'pid');
//check if the process is running
exec("ps $pid", $pState);
if((count($pState) >= 2) && !empty($pid))
{
echo "RUNNING";
}
else
{
echo "INACTIVE";
}

也可以把pid写入文件,但如果在一个分布式任务环境中,则放在数据库中要更好

停止一个后台进程:

//check if the process from the database is running
exec("ps $pid", $pState);
if((count($pState) >= 2))
{
//if the process is running, kill it
exec("kill $pid");
//update database row with an empty process id
}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
如何在PHP中使用Oracle数据库(3)
Oct 09 PHP
PHP中一个控制字符串输出的函数
Oct 09 PHP
PHP中用接口、抽象类、普通基类实现“面向接口编程”与“耦合方法”简述
Mar 23 PHP
PHP IF ELSE简化/三元一次式的使用
Aug 22 PHP
关于PHP的curl开启问题探讨
Apr 08 PHP
php的ZipArchive类用法实例
Oct 20 PHP
使用PHP生成图片的缩略图的方法
Aug 18 PHP
整理php防注入和XSS攻击通用过滤
Sep 13 PHP
PHP批量修改文件名称的方法分析
Feb 27 PHP
PHP手机号中间四位用星号*代替显示的实例
Jun 02 PHP
PHP高精确度运算BC函数库实例详解
Aug 15 PHP
php接口隔离原则实例分析
Nov 11 PHP
解决Yii2邮件发送结果返回成功,但接收不到邮件的问题
May 23 #PHP
yii 2.0中表单小部件的使用方法示例
May 23 #PHP
php实现留言板功能(会话控制)
May 23 #PHP
php实现文件预览功能
May 23 #PHP
PHP写的简单数字验证码实例
May 23 #PHP
php实现评论回复删除功能
May 23 #PHP
Yii框架批量插入数据扩展类的简单实现方法
May 23 #PHP
You might like
PHP 文件上传源码分析(RFC1867)
2009/10/30 PHP
PHP判断图片格式的七种方法小结
2013/06/03 PHP
php5.3 注意事项说明
2013/07/01 PHP
PHP编程计算日期间隔天数的方法
2017/04/26 PHP
CSS心形加载的动画源码的实现
2021/03/09 HTML / CSS
对字符串进行HTML编码和解码的JavaScript函数
2010/02/01 Javascript
javascript基础第一章 JavaScript与用户端
2010/07/22 Javascript
Extjs4 GridPanel的主要配置参数详细介绍
2013/04/18 Javascript
文件上传,iframe跨域数据提交的实现
2016/11/18 Javascript
原生JS和jQuery操作DOM对比总结
2017/01/19 Javascript
node.js利用redis数据库缓存数据的方法
2017/03/01 Javascript
详解nodejs微信jssdk后端接口
2017/05/25 NodeJs
vue 2.x 中axios 封装的get 和post方法
2018/02/28 Javascript
微信运维交互机器人的示例代码
2018/11/12 Javascript
解决layui的table插件无法多层级获取json数据的问题
2019/09/19 Javascript
关于vue2强制刷新,解决页面不会重新渲染的问题
2019/10/29 Javascript
node.JS路径解析之PATH模块使用方法详解
2020/02/06 Javascript
基于Python Shell获取hostname和fqdn释疑
2016/01/25 Python
python中is与双等于号“==”的区别示例详解
2017/11/21 Python
利用python实现简单的邮件发送客户端示例
2017/12/23 Python
Python内置函数reversed()用法分析
2018/03/20 Python
Ubuntu16.04/树莓派Python3+opencv配置教程(分享)
2018/04/02 Python
Python Unittest自动化单元测试框架详解
2018/04/04 Python
Python的形参和实参使用方式
2019/12/24 Python
Python基础之函数原理与应用实例详解
2020/01/03 Python
详解Django中异步任务之django-celery
2020/11/05 Python
python 实现端口扫描工具
2020/12/18 Python
html5拍照功能实现代码(htm5上传文件)
2013/12/11 HTML / CSS
英国旅行箱包和行李箱购物网站:Travel Luggage & Cabin Bags
2019/08/26 全球购物
银行实习生的自我评价
2013/12/09 职场文书
运动会广播稿400字
2014/01/25 职场文书
哈弗商学院毕业生求职信
2014/02/26 职场文书
2014五年级班主任工作总结
2014/12/05 职场文书
导游词欢迎词
2015/02/02 职场文书
NoSQL优缺点与MongoDB数据库简介
2022/06/05 MongoDB
CSS浮动引起的高度塌陷问题
2022/08/05 HTML / CSS