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 相关文章推荐
php设计模式 Template (模板模式)
Jun 26 PHP
浏览器预览PHP文件时顶部出现空白影响布局分析原因及解决办法
Jan 11 PHP
ThinkPHP3.1新特性之Action参数绑定
Jun 19 PHP
php中函数前加&amp;符号的作用分解
Jul 08 PHP
PHP实现的QQ空间g_tk加密算法
Jul 09 PHP
thinkphp中的url跳转用法分析
Jul 12 PHP
PHP命令行执行整合pathinfo模拟定时任务实例
Aug 12 PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
Mar 16 PHP
PHP 中魔术常量的实例详解
Oct 26 PHP
laravel框架关于搜索功能的实现
Mar 15 PHP
PHP实现类似题库抽题效果
Aug 16 PHP
Yii2.0框架behaviors方法使用实例分析
Sep 30 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构造方法中析构方法在继承中的表现
2016/04/12 PHP
在多个页面使用同一个HTML片段《续》
2011/03/04 Javascript
jquery写个checkbox——类似邮箱全选功能
2013/03/19 Javascript
JS调用CS里的带参方法实例
2013/08/01 Javascript
jQuery 和 CSS 的文本特效插件集锦
2014/12/12 Javascript
JavaScript使用位运算符判断奇数和偶数的方法
2015/06/01 Javascript
javascript执行环境及作用域详解
2016/05/05 Javascript
vue2.0 资源文件assets和static的区别详解
2018/04/08 Javascript
webstorm中vue语法的支持详解
2018/05/09 Javascript
JavaScript创建防篡改对象的方法分析
2018/12/30 Javascript
uniapp实现可滑动选项卡
2020/10/21 Javascript
[01:03:13]VG vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
windows 下python+numpy安装实用教程
2017/12/23 Python
启动Atom并运行python文件的步骤
2018/11/09 Python
Python 中包/模块的 `import` 操作代码
2019/04/22 Python
Flask使用Pyecharts在单个页面展示多个图表的方法
2019/08/05 Python
python实现抠图给证件照换背景源码
2019/08/20 Python
3行Python代码实现图像照片抠图和换底色的方法
2019/10/10 Python
Ubuntu16.04安装python3.6.5步骤详解
2020/01/10 Python
python interpolate插值实例
2020/07/06 Python
jupyter notebook快速入门及使用详解
2020/11/13 Python
matplotlib部件之套索Lasso的使用
2021/02/24 Python
CSS3的first-child选择器实战攻略
2016/04/28 HTML / CSS
英国性能汽车零件和发动机配件在线:Maxpeedingrods
2019/11/05 全球购物
端口镜像是怎么实现的
2014/03/25 面试题
C#怎么让一个窗口居中显示?
2015/10/20 面试题
老师给学生的表扬信
2014/01/17 职场文书
业绩考核岗位职责
2014/02/01 职场文书
采购部经理岗位职责
2014/02/10 职场文书
群众路线党员自我评议范文2014
2014/09/24 职场文书
中学生自我评价2015
2015/03/03 职场文书
论文答辩开场白大全
2015/05/27 职场文书
2016国庆促销广告语
2016/01/28 职场文书
创业项目大全(适合在家创业的项目)
2019/08/15 职场文书
python爬虫selenium模块详解
2021/03/30 Python
golang为什么要统一错误处理
2022/04/03 Golang