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 相关文章推荐
mysql 查询指定日期时间内sql语句实现原理与代码
Dec 16 PHP
PHP导航下拉菜单的实现如此简单
Sep 22 PHP
PHP网络操作函数汇总
May 18 PHP
PHP随手笔记整理之PHP脚本和JAVA连接mysql数据库
Nov 25 PHP
PHP与Ajax相结合实现登录验证小Demo
Mar 16 PHP
PHP模板引擎Smarty内建函数section,sectionelse用法详解
Apr 11 PHP
php的socket编程详解
Nov 20 PHP
CodeIgniter框架验证码类库文件与用法示例
Mar 18 PHP
360搜索引擎自动收录php改写方案
Apr 28 PHP
PHP 布尔值的自增与自减的实现方法
May 03 PHP
Yii2语言国际化的配置教程
Aug 19 PHP
基于PHP实现邮箱验证激活过程详解
Oct 28 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中的数组操作函数整理
2008/08/18 PHP
php 数组排序 array_multisort与uasort的区别
2011/03/24 PHP
PHP动态创建Web站点的方法
2011/08/14 PHP
实现PHP多线程异步请求的3种方法
2014/01/17 PHP
Windows平台实现PHP连接SQL Server2008的方法
2017/07/26 PHP
PHP如何通过带尾指针的链表实现'队列'
2020/10/22 PHP
多浏览器兼容的获取元素和鼠标的位置的js代码
2009/12/15 Javascript
ExtJS4中使用mixins实现多继承示例
2013/12/03 Javascript
如何在指定的地方插入html内容和文本内容
2013/12/23 Javascript
json中换行符的处理方法示例介绍
2014/06/10 Javascript
JS实现仿Windows经典风格的选项卡Tab切换代码
2015/10/20 Javascript
JQuery的常用选择器、过滤器、方法全面介绍
2016/05/25 Javascript
Bootstrap表单制作代码
2017/03/17 Javascript
Vue ElementUI之Form表单验证遇到的问题
2017/08/21 Javascript
bootstrap paginator分页插件的两种使用方式实例详解
2017/11/14 Javascript
vue.js使用v-if实现显示与隐藏功能示例
2018/07/06 Javascript
使用async await 封装 axios的方法
2018/07/09 Javascript
vue项目中使用scss的方法步骤
2019/05/16 Javascript
微信小程序 简易计算器实现代码实例
2019/09/02 Javascript
公众号SVG动画交互实战代码
2020/05/31 Javascript
[02:56]DOTA2矮人直升机 英雄基础教程
2013/11/26 DOTA
[40:50]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第四场
2014/05/24 DOTA
使用Python编写基于DHT协议的BT资源爬虫
2016/03/19 Python
python开发环境PyScripter中文乱码问题解决方案
2016/09/11 Python
python获取外网IP并发邮件的实现方法
2017/10/01 Python
python安装numpy&amp;安装matplotlib&amp; scipy的教程
2017/11/02 Python
python利用高阶函数实现剪枝函数
2018/03/20 Python
Python爬虫之网页图片抓取的方法
2018/07/16 Python
python:目标检测模型预测准确度计算方式(基于IoU)
2020/01/18 Python
Fanatics英国官网:美国体育电商
2018/11/06 全球购物
电大毕业个人生自我鉴定
2014/03/26 职场文书
2014年党员创先争优承诺书
2014/05/29 职场文书
2014法院干警廉洁警示教育思想汇报
2014/09/13 职场文书
教师节领导致辞
2015/07/29 职场文书
nginx对http请求处理的各个阶段详析
2021/03/31 Servers
浅谈Node的内存泄露问题
2022/05/06 NodeJs