即时通讯或者推送消息的守护进程?开启几个进程?

进程根据状态可以分为三种进程,守护进程,僵尸进程,孤儿进程。今天我们着重来分析下守护进程。

1.daemon?
(1)概念

守护进程 (daemon) 是一类在后台运行的特殊进程,用于执行特定的系统任务。很多守护进程在系统引导的时候启动,并且一直运行直到系统关闭。另一些只在需要的时候才启动,完成任务后就自动结束.

(2)基本特点

生存周期长[非必须],一般操作系统启动的时候就启动,关闭的时候关闭。

守护进程和终端无关联,也就是他们没有控制终端,所以当控制终端退出,也不会导致守护进程退出。

守护进程是在后台运行,不会占着终端,终端可以执行其他命令

守护进程的父进程是1号进程,也就是init进程。

(3)在Linux中 , 大概有三种方式实现脚本后台化 :

PHP 编写守护进程 - 知乎 (zhihu.com)

a:在命令后添加一个&符号 , 比如 php task.php & . 这个方法的缺点在于 如果terminal终端关闭 , 无论是正常关闭还是非正常关闭 , 这个php进程都会随着终端关闭而关闭 , 其次是代码中如果有echo或者print_r之类的输出文本 , 会被输出到当前的终端窗口中 .

b:使用nohup命令 , 比如 nohup php task.php & . 默认情况下 , 代码中echo或者print_r之类输出的文本会被输出到php代码同级目录的nohup.out文件中 . 如果你用exit命令或者关闭按钮等正常手段关闭终端 , 该进程不会被关闭 , 依然会在后台持续运行 . 但是如果终端遇到异常退出或者终止 , 该php进程也会随即退出 . 本质上 , 也并非稳定可靠的daemon方案 .

c:使用fork和setsid , 我暂且称之为 : *nix解决方案

d:使用supervisor工具 (推荐此方案)

e:systemd 

(4)php代码实现

PHP中实现守护进程的步骤是什么,如何编程-群英 (qycn.com)

  • 创建子进程,退出父进程
  • 子进程创建一个新的会话并成为 session leader
  • 重设文件掩码
  • 改变工作目录
  • 关闭标准输入输出
 0) {exit(0);}/ 以下是子进程 /// [3] 创建一个新的会话并成为 session leaderif ( ($sid = posix_setsid()) <= 0 ) {die("set sid failed.\n");}// [4] 重设文件掩码umask(0);// [5] 改变工作目录if (chdir('/') === false) {die("chdir failed.\n");}// [6] 关闭标准输入输出fclose(stdin);fclose(stdout);fclose(stderr);
}daemon();// ... 真正的处理逻辑
2.开启多少进程

Gateway进程数不是开得越多越好,Gateway进程增多会导致进程间通讯开销变大。

每个Gateway进程可以轻松处理5000连接的请求转发,业务同时在线连接数少于5000时可以只开1-2个Gateway进程。1万同时在线可以开2-3个Gateway进程,每5000个连接增加一个Gateway进程,依次类推。

BusinessWorker进程中根据业务是否有阻塞式IO设置进程数为CPU核数的1倍-4倍即可。 即start_businessworker.php$worker->count = cpu核数的1-4倍;

进程数是由count属性决定的(windows系统不支持进程数设置),例如下面代码

use Workerman\Worker;
require_once __DIR__ . '/vendor/autoload.php';$http_worker = new Worker("http://0.0.0.0:2345");// ## 启动4个进程对外提供服务 ##
$http_worker->count = 4;...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/112785.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初出茅庐的小李博客之Windows11运行Linux记录

安装教程 超简单&#xff0c;不安装虚拟机&#xff0c;Windows11运行Linuxhttps://zhuanlan.zhihu.com/p/393484912 注意事项 出现错误有可能是少了驱动 驱动下载地址 https://link.zhihu.com/?targethttps%3A//wslstorestorage.blob.core.windows.net/wslblob/wsl_updat…

Django和jQuery,实现Ajax表格数据分页展示

1.需求描述 当存在重新请求接口才能返回数据的功能时&#xff0c;若页面的内容很长&#xff0c;每次点击一个功能&#xff0c;页面又回到了顶部&#xff0c;对于用户的体验感不太友好&#xff0c;我们希望当用户点击这类的功能时&#xff0c;能直接加载到数据&#xff0c;请求…

牛客网---活动运营刷题笔记

## 第一次 1.以下哪个活动玩法&#xff0c;不是为了给APP带来新增用户&#xff1f; A打折促销 B用户认证 C裂变活动 D有奖下载 正确答案&#xff1a;B 官方解析&#xff1a;本题主要考查活动拉新的方式 打折促销&#xff0c;即通过降低商品价格&#xff0c;促进商品销售&#…

安防视频监控系统EasyCVR视频汇聚存储平台定制化开发:新增kafka配置

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台可拓展性强、…

【算法训练-回溯算法 零】回溯算法解题框架

抽象地说&#xff0c;解决一个回溯问题&#xff0c;实际上就是遍历一棵决策树的过程&#xff0c;树的每个叶子节点存放着一个合法答案。你把整棵树遍历一遍&#xff0c;把叶子节点上的答案都收集起来&#xff0c;就能得到所有的合法答案。站在回溯树的一个节点上&#xff0c;你…

QT学习笔记-QT访问各种关系数据库笔记汇总

QT学习笔记-QT访问各种关系数据库笔记汇总 1、QT访问Oracle数据库2、QT访问SQLServer数据库3、QT访问MySQL数据库4、QT访问PostgreSQL数据库5、QT访问Access数据库6、QT多线程中访问数据库的要点 在使用QT进行应用开发过程中&#xff0c;不可避免的会涉及到访问关系数据库&…

协同过滤推荐算法UserCF、ItemCF

目录 相似度计算基于用户的协同过滤&#xff08;UserCF&#xff09;算法评估基于物品的协同过滤&#xff08;ItemCF&#xff09;协同过滤算法的权重改进协同过滤算法的问题分析思考学习参考 相似度计算 杰卡德&#xff08;Jaccard&#xff09;相似系数 Jaccard 系数是衡量两个…

js库——Day.js、Big.js

Day.js 方便操作对时间解析 验证 对时间进行计算等操作。 官方文档&#xff1a;https://dayjs.fenxianglu.cn npm i -S dayjs 1. 给定时间戳或者时间格式&#xff0c;获取格式化后的日期 dayjs(new Date()).format(YYYY-MM-DD HH:mm:ss) 2. 获取固定开始和固定结束的时间da…

在win10上安装配置Hadoop的环境变量

一、背景 在windows10系统中运行seatunnel 二、安装部署 2.1. 下载 Hadoop包 从 Apache Hadoop 官网下载最新版本的 Hadoop&#xff0c;版本号保持与服务端的Hadoop版本一致。 https://hadoop.apache.org/releases.htmlIndex of /apache/hadoop/core/hadoop-3.2.3/ 2.2. 解…

Qt文件对话框的使用

本文介绍Qt文件对话框的使用。 Qt编程中通常会遇到对文件的操作&#xff0c;比如打开&#xff0c;保存等&#xff0c;这些操作通常是通过文件对话框来进行操作的&#xff0c;文件对话框通常具有固定的样式&#xff0c;通过它可以获取到文件名&#xff0c;进而通过文件名打开文…

IntelliJ IDEA 2020.2.1白票安装使用方法

先安装好idear Plugins 内手动添加第三方插件仓库地址&#xff1a;https://plugins.zhile.io 搜索&#xff1a;IDE Eval Reset插件进行安装 输入https://plugins.zhile.io 手动安装离线插件方法 安装包可以去笔者的CSDN资源库下载 安装mybaties插件

【leetcode报错】 leetcode格式问题解决:error: stray ‘\302’ in program [solution.c]

leetcode格式问题解决 一、情景再现二、报错原因三、解决方法四、修正结果 一、情景再现 二、报错原因 该错误是指 源程序中有非法字符&#xff0c;需要将非法字符去掉。 一般是由于coder 1.使用中文输入法 或者 2.从别的地方直接复制粘贴代码 造成的。 代码中出现了 中文空格&…

How to add a jar to a project in eclipse?

Project -> Properties -> Java Build Path -> Libraries -> Add External JARs

AI绘画使用Stable Diffusion(SDXL)绘制玉雕风格的龙

一、引言 灵感来源于在逛 LibLib 时&#xff0c;看到的 Lib 原创者「熊叁gaikan」发布的「翠玉白菜 sdxl&#xff5c;玉雕风格」 的 Lora 模型。简直太好看了&#xff0c;一下子就被吸引了&#xff01; 科普下「翠玉白菜」&#xff1a; 翠玉白菜是由翠玉所琢碾出白菜形状的清…

R语言:主成分分析PCA

文章目录 主成分分析处理步骤数据集code 主成分分析 主成分分析&#xff08;或称主分量分析&#xff0c;principal component analysis&#xff09;由皮尔逊&#xff08;Pearson,1901&#xff09;首先引入&#xff0c;后来被霍特林&#xff08;Hotelling,1933&#xff09;发展…

HTML 常用标签及练习

常用标签 <head>中的标签 概述 head中的内容不显示到页面上 标签说明<title>定义网页的标题<meta>定义网页的基本信息&#xff08;供搜索引擎&#xff09;<style>定义CSS样式<link>链接外部CSS文件或脚本文件<script>定义脚本语言<…

麒麟V10SP01部署docker报错:http:invalid Host header

问题描述 在麒麟v10sp01系统中使用yumdownloader下载的docker版本是docker-engine-18.09.0-101.p06.ky10.x86_64&#xff0c;部署docker后运行容器&#xff0c;进入容器查看时报错http:invalid Host header。在网上查了半天也没有找到解决方法。 后来请教公司高人后&#xff0c…

带返回值的递归转为非递归

带返回值的递归转为非递归与不带返回值的递归转为非递归相似。不同的地方是有个如何保存和使用返回值的问题。 以组合数计算为例。计算公式是&#xff0c;C(n, k) C(n-1, k) C(n-1, k-1)。写成递归的代码是&#xff0c; func cbn(n, k) {if(nk||k0) return 1;else if(k1) r…

房地产行业程序员管理痛点分析

很久前跟某地产公司程序员聊天&#xff0c;谈到程序员管理的痛点问题&#xff0c;怎么去解决这些痛点。 1.大部分骨干力量集中休年假。理由有&#xff1a;回家照顾老人。请病假&#xff1a;职业病方面&#xff0c;比如眼睛痛&#xff0c;头痛&#xff0c;脖子颈椎痛&#xff0c…

Oracle性能调优实践中的几点心得

很多的时侯&#xff0c;做OracleDBA的我们&#xff0c;当应用管理员向我们通告现在应用很慢、数据库很慢的时侯&#xff0c;我们到数据库时做几个示例的Select也发现同样的问题时&#xff0c;有些时侯我们会无从下手&#xff0c;因为我们认为数据库的各种命种率都是满足Oracle文…