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和ACCESS写聊天室(四)
Oct 09 PHP
php图像处理函数大全(推荐收藏)
Jul 11 PHP
php session_start()出错原因分析及解决方法
Oct 28 PHP
支持生僻字且自动识别utf-8编码的php汉字转拼音类
Jun 27 PHP
php防止网站被刷新的方法汇总
Dec 01 PHP
php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法
Dec 15 PHP
php调用KyotoTycoon简单实例
Apr 02 PHP
PHP使用递归方式列出当前目录下所有文件的方法
Jun 02 PHP
php获取数据库结果集方法(推荐)
Jun 01 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
Sep 22 PHP
阿里云Win2016安装Apache和PHP环境图文教程
Mar 11 PHP
php实现微信企业付款到个人零钱功能
Oct 09 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_SELF的安全问题
2009/09/05 PHP
使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
2013/04/25 PHP
php基于socket实现SMTP发送邮件的方法
2015/03/05 PHP
php字符串替换函数substr_replace()用法实例
2015/03/17 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
2019/10/11 PHP
Laravel 实现添加多语言提示信息
2019/10/25 PHP
详解PHP中curl_multi并发的实现
2020/06/08 PHP
使用jQuery实现图片遮罩半透明坠落遮挡
2015/03/16 Javascript
JavaScript通过事件代理高亮显示表格行的方法
2015/05/27 Javascript
微信小程序 form组件详解
2016/10/25 Javascript
微信小程序 wxapp内容组件 progress详细介绍
2016/10/31 Javascript
JS生成和下载二维码的代码
2016/12/07 Javascript
Ext JS 实现建议词模糊动态搜索功能
2017/05/13 Javascript
解决Angular.js中使用Swiper插件不能滑动的问题
2018/02/26 Javascript
js判断输入框不能为空格或null值的实现方法
2018/03/02 Javascript
Layer弹出层动态获取数据的方法
2018/08/20 Javascript
layui 解决富文本框form表单提交为空的问题
2019/10/26 Javascript
解决vue-photo-preview 异步图片放大失效的问题
2020/07/29 Javascript
[01:29:42]Liquid vs VP Supermajor决赛 BO 第一场 6.10
2018/07/05 DOTA
Python的print用法示例
2014/02/11 Python
python中split方法用法分析
2015/04/17 Python
Python编程实现删除VC临时文件及Debug目录的方法
2017/03/22 Python
老生常谈Python进阶之装饰器
2017/05/11 Python
关于Django显示时间你应该知道的一些问题
2017/12/25 Python
Sanic框架异常处理与中间件操作实例分析
2018/07/16 Python
python中update的基本使用方法详解
2019/07/17 Python
Django实现web端tailf日志文件功能及实例详解
2019/07/28 Python
Python3 虚拟开发环境搭建过程(图文详解)
2020/01/06 Python
深入CSS3 动画效果的总结详解
2013/05/09 HTML / CSS
de Bijenkorf比利时官网:荷兰最知名的百货商店
2017/06/29 全球购物
网络艺术零售业的先驱者:artrepublic
2017/09/26 全球购物
阿联酋彩妆品牌:OUD MILANO
2019/10/06 全球购物
OSPF有什么优点?为什么OSPF比RIP收敛快?
2013/02/13 面试题
2016教师政治学习心得体会
2016/01/23 职场文书
python for循环赋值问题
2021/06/03 Python
Redis中缓存穿透/击穿/雪崩问题和解决方法
2021/12/04 Redis