文档章节

PHP 使用pcntl实现守护进程

龚政
 龚政
发布于 2017/09/10 11:51
字数 143
阅读 22
收藏 0
点赞 0
评论 0
declare(ticks=1);
$top_pid = pcntl_fork();
// 结束父进程,子进程继续执行
if ($top_pid) {
	exit();
}
// 子进程脱离用户终端控制,成为新的会话组长
posix_setsid();

// 防止会话组长重新打开控制终端,再次创建子进程,并退出当前进程
$new_pid = pcntl_fork();
if ($new_pid) {
	exit();
}
chdir('/') && umask(0);
$workers = array();
while (true) {
	while (count($workers) >= 3) {
        $child_pid = pcntl_wait($status);
		if ($child_pid < 0) {
			file_put_contents('/tmp/error.log', 'error_no:'.$status.';error_msg:'.pcntl_get_last_error());
		}else{
            $index = array_search($child_pid, $workers);
            unset($workers[$index]);
        }       
	}
	$pid = pcntl_fork();
	if ($pid) {
		$workers[]=$pid;
        continue;
	}
    // 子进程执行
    sleep(20);
    file_put_contents('/tmp/daemon.log', date('Y-m-d H:i:s').json_encode($workers).PHP_EOL,FILE_APPEND);
    exit(0);   
}

© 著作权归作者所有

共有 人打赏支持
龚政
粉丝 0
博文 5
码字总数 906
作品 0
武汉
后端工程师
PHP实现PCNTL多进程任务

PHP使用PCNTL系列的函数也能做到多进程处理一个事务。比如我需要从数据库中获取80w条的数据,再做一系列后续的处理,这个时候,用单进程?你可以等到明年今天了。。。所以应该使用pcntl函数了...

p至尊宝 ⋅ 2016/03/31 ⋅ 0

用PHP实现守护进程任务后台运行与多线程(php-resque使用说明)

消息队列处理后台任务带来的问题 项目中经常会有后台运行任务的需求,比如发送邮件时,因为要连接邮件服务器,往往需要5-10秒甚至更长时间,如果能先给用户一个成功的提示信息,然后在后台慢...

金三胖 ⋅ 2015/08/01 ⋅ 1

一个作词家/cron-manager

cronManager 简介 cronManager是一个纯PHP实现的定时任务管理工具,api简单清晰,采用的是多进程模型,进程通信采用的是消息队列,任务监控也提供了简单的命令,方便易用 特性 多进程模型 支持守护...

一个作词家 ⋅ 2017/12/26 ⋅ 0

php安装gearman扩展实现异步分步式任务

一、简介 Gearman是一个分发任务的程序框架,它会对作业进行排队自动分配到一系列机器上。gearman跨语言跨平台,很方便的实现异步后台任务。php官方收录:http://php.net/manual/zh/book.gea...

bengozhong ⋅ 2015/11/08 ⋅ 0

轻量级Socket服务--MeepoPS

MeepoPS是Meepo PHP Socket的缩写。旨在提供高效稳定的由纯PHP开发的多进程SocketService。 MeepoPS可以轻松构建在线实时聊天,即时游戏,视频流媒体播放,RPC,实时监控,以及原本使用HTTP的...

李轩Lane ⋅ 2016/05/31 ⋅ 9

php多进程实现

PHP多进程实现 PHP有一组进程控制函数(编译时需要–enable-pcntl与posix扩展),使得php能在nginx系统中实现跟c一样的创建子进程、使用exec函数执行程序、处理信号等功能。 CentOS 6 下yum安装...

小田天 ⋅ 2016/11/28 ⋅ 0

PHP 实现守护进程(Daemon)

守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。php也可以实现守护进程的功能。 最近要开...

SibylY ⋅ 2016/06/16 ⋅ 0

swoole 1.7.3 发布,增加PHP多进程管理模块

swoole 1.7.3 发布,PHP的异步并行扩展swoole,最近增加了多进程管理模块swoole_process,用来替代PHP的pcntl扩展。 PHP自带的pcntl,存在很多不足,如 pcntl无法用在fpm/apache中 pcntl没有...

matyhtf ⋅ 2014/06/20 ⋅ 13

php定时任务管理工具

CrontabWorker 此工具是一个php定时任务管理工具,支持大量PHP定时脚本,采用预派生进程模型,父进程负责计算定时任务间隔逻辑向消息队列写入任务,子进程负责处理消息队列任务,当处理任务进程数...

莫问出处丶 ⋅ 2017/11/18 ⋅ 0

php多进程应用

PHP有一组进程控制函数(编译时需要 –enable-pcntl与posix扩展),使得php能在*nix系统中实现跟c一样的创建子进程、使用exec函数执行程序、处理信号等功能。PCNTL使用ticks来作为信号处理机制...

旋转木马-千里马 ⋅ 2015/12/29 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring | IOC AOP 注解 简单使用

写在前面的话 很久没更新笔记了,有人会抱怨:小冯啊,你是不是在偷懒啊,没有学习了。老哥,真的冤枉:我觉得我自己很菜,还在努力学习呢,正在学习Vue.js做管理系统呢。即便这样,我还是不...

Wenyi_Feng ⋅ 今天 ⋅ 0

博客迁移到 https://www.jianshu.com/u/aa501451a235

博客迁移到 https://www.jianshu.com/u/aa501451a235 本博客不再更新

为为02 ⋅ 今天 ⋅ 0

win10怎么彻底关闭自动更新

win10自带的更新每天都很多,每一次下载都要占用大量网络,而且安装要等得时间也蛮久的。 工具/原料 Win10 方法/步骤 单击左下角开始菜单点击设置图标进入设置界面 在设置窗口中输入“服务”...

阿K1225 ⋅ 今天 ⋅ 0

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Testpu...

bboss ⋅ 今天 ⋅ 0

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上...

wangxuwei ⋅ 今天 ⋅ 0

PHP语言系统ZBLOG或许无法重现月光博客的闪耀历史[图]

最近在写博客,希望通过自己努力打造一个优秀的教育类主题博客,名动江湖,但是问题来了,现在写博客还有前途吗?面对强大的自媒体站点围剿,还有信心和可能型吗? 至于程序部分,我选择了P...

原创小博客 ⋅ 今天 ⋅ 0

IntelliJ IDEA 2018.1新特性

工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试? 本文转载自:netty技术内幕 3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再...

Romane ⋅ 今天 ⋅ 0

浅谈设计模式之工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻...

佛系程序猿灬 ⋅ 今天 ⋅ 0

Dockerfile基础命令总结

FROM 指定使用的基础base image FROM scratch # 制作base image ,不使用任何基础imageFROM centos # 使用base imageFROM ubuntu:14.04 尽量使用官方的base image,为了安全 LABEL 描述作...

ExtreU ⋅ 昨天 ⋅ 0

存储,对比私有云和公有云的不同

导读 说起公共存储,很难不与后网络公司时代的选择性外包联系起来,但尽管如此,它还是具备着简单和固有的可用性。公共存储的名字听起来也缺乏专有性,很像是把东西直接堆放在那里而不会得到...

问题终结者 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部