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

编程入门 行业动态 更新时间:2024-10-26 20:34:20

即时通讯或者推送消息的守护<a href=https://www.elefans.com/category/jswz/34/1771450.html style=进程?开启几个进程?"/>

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

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

1.daemon?
(1)概念

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

(2)基本特点

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

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

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

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

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

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

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)

  • 创建子进程,退出父进程
  • 子进程创建一个新的会话并成为 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(":2345");// ## 启动4个进程对外提供服务 ##
$http_worker->count = 4;...

更多推荐

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

本文发布于:2023-12-07 08:21:59,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1670662.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:进程   几个   即时通讯   消息

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!