php实现简单的守护进程创建、开启与关闭操作


Posted in PHP onAugust 13, 2019

本文实例讲述了php实现简单的守护进程创建、开启与关闭操作。分享给大家供大家参考,具体如下:

前提要安装有pcntl扩展,可通过php -m查看是否安装

<?php
class Daemon {
  private $pidfile;
  function __construct() {
    $this->pidfile = dirname(__FILE__).'/daemontest.pid';
  }
  private function startDeamon() {
    if (file_exists($this->pidfile)) {
      echo "The file $this->pidfile exists.\n";
      exit();
    }
    $pid = pcntl_fork();
    if ($pid == -1) {
      die('could not fork');
    } else if ($pid) {
      echo 'start ok';
      exit($pid);
    } else {
    // we are the child
      file_put_contents($this->pidfile, getmypid());
      return getmypid();
    }
  }
  private function start(){
    $pid = $this->startDeamon();
    while (true) {
      file_put_contents(dirname(__FILE__).'/test.txt', date('Y-m-d H:i:s'), FILE_APPEND);
      sleep(2);
    }
  }
  private function stop(){
    if (file_exists($this->pidfile)) {
      $pid = file_get_contents($this->pidfile);
      posix_kill($pid, 9);
      unlink($this->pidfile);
    }
  }
  public function run($argv) {
    if($argv[1] == 'start') {
      $this->start();
    }else if($argv[1] == 'stop') {
      $this->stop();
    }else{
      echo 'param error';
    }
  }
}
$deamon = new Daemon();
$deamon->run($argv);

启动

php deamon.php start

关闭

php deamon.php stop

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

PHP 相关文章推荐
一个分页的论坛
Oct 09 PHP
pdo中使用参数化查询sql
Aug 11 PHP
zend Framework中的Layout(模块化得布局)详解
Jun 28 PHP
腾讯微博提示missing parameter errorcode 102 错误的解决方法
Dec 22 PHP
php使用mysqli向数据库添加数据的方法
Mar 20 PHP
PHP SplObjectStorage使用实例
May 12 PHP
php集成动态口令认证
Jul 21 PHP
php实现XML和数组的相互转化功能示例
Feb 08 PHP
PHP判断是否是微信打开,浏览器打开的方法
Mar 14 PHP
php strftime函数的详细用法
Jun 21 PHP
Laravel框架集合用法实例浅析
May 14 PHP
php + ajax 实现的写入数据库操作简单示例
May 16 PHP
Laravel如何同时连接多个数据库详解
Aug 13 #PHP
Laravel 默认邮箱登录改成用户名登录的实现方法
Aug 12 #PHP
php链式操作的实现方式分析
Aug 12 #PHP
基于PHP实现微信小程序客服消息功能
Aug 12 #PHP
php swoole多进程/多线程用法示例【基于php7nts版】
Aug 12 #PHP
PHP基于swoole多进程操作示例
Aug 12 #PHP
PHP swoole和redis异步任务实现方法分析
Aug 12 #PHP
You might like
PHP 杂谈《重构-改善既有代码的设计》之四 简化条件表达式
2012/04/09 PHP
解析PHP中数组元素升序、降序以及重新排序的函数
2013/06/20 PHP
ThinkPHP实现二级循环读取的方法
2014/11/03 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
2015/10/13 PHP
微信开发之网页授权获取用户信息(二)
2016/01/08 PHP
jQuery 学习6 操纵元素显示效果的函数
2010/02/07 Javascript
suggestion开发小结以及对键盘事件的总结(针对中文输入法状态)
2011/12/20 Javascript
jquery选择器之内容过滤选择器详解
2014/01/27 Javascript
js去除浏览器默认底图的方法
2015/06/08 Javascript
使用jQuery制作浮动工具栏的实例分享
2016/05/13 Javascript
JavaScript三种绑定事件方式及相互之间的区别分析
2017/01/10 Javascript
JS中实现函数return多个返回值的实例
2017/02/21 Javascript
jQuery阻止移动端遮罩层后页面滚动
2017/03/15 Javascript
[js高手之路]单例模式实现模态框的示例
2017/09/01 Javascript
node.js 利用流实现读写同步,边读边写的方法
2017/09/11 Javascript
jQuery仿移动端支付宝键盘的实现代码
2018/08/15 jQuery
layui 上传文件_批量导入数据UI的方法
2019/09/23 Javascript
浅谈Vue使用Cascader级联选择器数据回显中的坑
2020/10/31 Javascript
[01:01:13]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第三场
2018/04/06 DOTA
centos6.4下python3.6.1安装教程
2017/07/21 Python
Python实现的大数据分析操作系统日志功能示例
2019/02/11 Python
opencv设置采集视频分辨率方式
2019/12/10 Python
Pytorch在dataloader类中设置shuffle的随机数种子方式
2020/01/14 Python
tensorflow对图像进行拼接的例子
2020/02/05 Python
关于PySnooper 永远不要使用print进行调试的问题
2021/03/04 Python
倩碧美国官网:Clinique美国
2016/07/20 全球购物
南非最受欢迎的时尚品牌:MRP
2016/09/18 全球购物
全球酒店比价网:HotelsCombined
2017/06/20 全球购物
美国最古老的精致书写工具制造商:A.T. Cross(高仕)
2018/01/30 全球购物
澳大利亚婴儿、幼儿和儿童在线设计师商店:Smooch Baby
2019/02/16 全球购物
个性发展自我评价
2014/02/11 职场文书
12月红领巾广播稿
2014/02/13 职场文书
党员学习中共十八大思想报告
2014/09/12 职场文书
小班下学期幼儿评语
2014/12/30 职场文书
高二英语教学反思
2016/03/03 职场文书
Python编写车票订购系统 Python实现快递收费系统
2022/08/14 Python