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 和 MySQL 基础教程(四)
Oct 09 PHP
解决文件名解压后乱码的问题 将文件名进行转码的代码
Jan 10 PHP
php删除文件夹及其文件夹下所有文件的函数代码
Jan 23 PHP
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file
Jun 03 PHP
怎样使用php与jquery设置和读取cookies
Aug 08 PHP
PHP框架laravel的.env文件配置教程
Jun 07 PHP
SCP远程VPS快速搬家和WDCP升级php5.3安装memcached和eaccelerator教程
Jul 27 PHP
laravel实现Auth认证,登录、注册后的页面回跳方法
Sep 30 PHP
浅谈PHP5.6 与 PHP7.0 区别
Oct 09 PHP
tp5 实现列表数据根据状态排序
Oct 18 PHP
Laravel监听数据库访问,打印SQL的例子
Oct 24 PHP
PHP中abstract(抽象)、final(最终)和static(静态)原理与用法详解
Jun 05 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
一个可查询所有表的“通用”查询分页类
2006/10/09 PHP
解析php session_set_save_handler 函数的用法(mysql)
2013/06/29 PHP
百度工程师讲PHP函数的实现原理及性能分析(一)
2015/05/13 PHP
php监测数据是否成功插入到Mysql数据库的方法
2016/11/25 PHP
浅谈php中变量的数据类型判断函数
2017/03/04 PHP
PHP实现的AES 128位加密算法示例
2019/09/16 PHP
php抽象方法和普通方法的区别点总结
2019/10/13 PHP
js下将字符串当函数执行的方法
2011/07/13 Javascript
JS案例分享之金额小写转大写
2014/05/15 Javascript
BAT及各大互联网公司2014前端笔试面试题--JavaScript篇
2014/10/29 Javascript
JS和JQ的event对象区别分析
2014/11/24 Javascript
javascript自定义右键弹出菜单实现方法
2015/05/25 Javascript
jQuery formValidator表单验证
2016/01/07 Javascript
深入理解js中this的用法
2016/05/28 Javascript
详解AngularJS中ng-src指令的使用
2016/09/07 Javascript
微信小程序 简单DEMO布局,逻辑,样式的练习
2016/11/30 Javascript
浅谈js键盘事件全面控制
2016/12/01 Javascript
JavaScript实现反转字符串的方法详解
2017/04/27 Javascript
把JavaScript代码改成ES6语法不完全指南(分享)
2017/09/10 Javascript
jQuery实现html双向绑定功能示例
2017/10/09 jQuery
微信小程序的生命周期的详解
2017/10/19 Javascript
Vue下拉框回显并默认选中随机问题
2018/09/06 Javascript
vue移动端下拉刷新和上拉加载的实现代码
2018/09/08 Javascript
vue-router懒加载速度缓慢问题及解决方法
2018/11/25 Javascript
详细讲解如何创建, 发布自己的 Vue UI 组件库
2019/05/29 Javascript
[02:36]DOTA2亚洲邀请赛小组赛精彩集锦:奇迹哥卡尔秀翻全场
2017/03/28 DOTA
Python返回数组/List长度的实例
2018/06/23 Python
Python析构函数__del__定义原理解析
2020/11/20 Python
英国领先的男士美容护发用品公司:Mankind
2016/08/31 全球购物
MATCHESFASHION.COM法国官网:英国奢侈品零售商
2018/01/04 全球购物
意大利独特而优质的家居用品:Fazzini
2018/12/05 全球购物
银河香水:Galaxy Perfume
2019/03/25 全球购物
Tomcat的缺省是多少,怎么修改
2014/04/09 面试题
大专生毕业的自我评价
2014/02/06 职场文书
毕业设计说明书
2014/05/07 职场文书
普通话宣传标语
2014/06/26 职场文书