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 相关文章推荐
把从SQL中取出的数据转化成XMl格式
Oct 09 PHP
php中使用DOM类读取XML文件的实现代码
Dec 14 PHP
PHP 日,周,月点击排行统计
Jan 11 PHP
真正根据utf8编码的规律来进行截取字符串的函数(utf8版sub_str )
Oct 24 PHP
解析PHP处理换行符的问题 \r\n
Jun 13 PHP
浅析php面向对象public private protected 访问修饰符
Jun 30 PHP
php发送post请求的三种方法
Feb 11 PHP
php GUID生成函数和类
Mar 10 PHP
php实现RSA加密类实例
Mar 26 PHP
详解WordPress中调用评论模板和循环输出评论的PHP函数
Jan 05 PHP
验证token、回复图文\文本、推送消息的实用微信类php代码
Jun 28 PHP
/etc/php-fpm.d/www.conf 配置注意事项
Feb 04 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
实用函数7
2007/11/08 PHP
thinkphp的CURD和查询方式介绍
2013/12/19 PHP
PHP中的命名空间相关概念浅析
2015/01/22 PHP
PHP PDOStatement::bindParam讲解
2019/01/30 PHP
js常见表单应用技巧
2008/01/09 Javascript
jQuery库与其他JS库冲突的解决办法
2010/02/07 Javascript
jQuery事件绑定.on()简要概述及应用
2013/02/07 Javascript
超链接的禁用属性Disabled使用示例
2014/07/31 Javascript
详谈JavaScript内存泄漏
2014/11/14 Javascript
原生js的数组除重复简单实例
2016/05/24 Javascript
jQuery中使用animate自定义动画的方法
2016/05/29 Javascript
AngularJS 控制器 controller的详解
2017/10/17 Javascript
JavaScript之创意时钟项目(实例讲解)
2017/10/23 Javascript
Vue异步组件处理路由组件加载状态的解决方案
2018/09/07 Javascript
vue动态设置路由权限的主要思路
2021/01/13 Vue.js
[05:13]TI4 中国战队 机场出征!!
2014/07/07 DOTA
Python编程实现双击更新所有已安装python模块的方法
2017/06/05 Python
Python中正反斜杠(‘/’和‘\’)的意义与用法
2019/08/12 Python
Python pandas.DataFrame 找出有空值的行
2019/09/09 Python
python利用线程实现多任务
2020/09/18 Python
HTML5+CSS3实现机器猫
2016/10/17 HTML / CSS
美国和加拿大房车出售在线分类广告:RVT.com
2018/04/23 全球购物
英国鞋网:Rubber Sole
2020/03/03 全球购物
nohup的用法
2012/11/26 面试题
高中竞选班长演讲稿
2014/04/24 职场文书
团日活动总结
2014/04/28 职场文书
小学生教师节演讲稿
2014/09/03 职场文书
领导干部群众路线教育实践活动剖析材料
2014/10/10 职场文书
公司财务人员岗位职责
2015/04/14 职场文书
现实表现证明材料
2015/06/19 职场文书
关于运动会的广播稿
2015/08/19 职场文书
志愿服务心得体会
2016/01/15 职场文书
Mysql排查分析慢sql之explain实战案例
2022/04/19 MySQL
高通2023 年将发布高性能PC处理器
2022/04/29 数码科技
Java 多线程并发FutureTask
2022/06/28 Java/Android
Java 中的 Lambda List 转 Map 的多种方法详解
2022/07/07 Java/Android