[TOC]
# php 多进程
******
php 多进程是在开发业务逻辑层面,并行处理多个任务的一种开发方式,例如,需要给10万个会员发送邮件,每个邮件需要处理1秒,如果是一个进程处理,就得10万\*1秒才能处理完,但是,如果开启多个进程同时处理,例如:10个进程,那只需要10万\*1/10秒就能处理完成,缩短了10倍的时间。
<br />
## 多进程的概念
前面有讲到,多进程主要是在开发业务逻辑层面,并行处理多个任务的开发方式,什么叫做开发业务逻辑层面呢?
在上面我们讲到,php-fpm 是 fast-cgi 进程进行处理逻辑,对于运行业务逻辑的这个 php 进程,其实是单进程的。
在 php-fpm 软件层面,fast-cgi 的多个进程就属于多进程处理,但是,当用户发起请求,由 nginx 交给 php-fpm 处理请求时,在这个层面,每个请求其实只占有一个 php fast-cgi 进程进行处理逻辑,对于运行业务逻辑的这个 php 进程,其实是单进程的。
同理,当我们直接运行一个 php 文件时,默认是只开启一个 php 进程进行运行 php 的代码。
<br />
## 多进程的开发场景
在传统 web 模式下,php 一向是单进程处理业务逻辑,只有在 php-cli 模式下,用于处理异步任务,作为网络服务器时,才能用到多线程处理,所以,大部分 phper 都对 php 多进程的概念不熟悉。
<br />
## 伪多进程
在上面讲到,在传统 web 下,一个请求就是一个进程,我们可以通过这个方法,实现理论上的多进程:
* 在一个 php 文件中,写消费任务逻辑,比如给队列中的会员 id 发送邮件(注意超时,注意用户端关闭不终止脚本)
* 用网页访问这个 php 文件,相当于开启了一个进程处理
* 再开第二个网页访问这个文件,相当于又开启了一个进程
* 如此重复,我们可以得到n 个处理邮件的进程
* 针对于消费任务逻辑层面,我们已经是开启了多进程在处理了。
- 引言
- Introduction
- 运行模式
- php-fpm
- php-cli
- 基础介绍
- 网络协议
- ip
- tcp
- tcp
- http
- webSocket
- udp
- port端口
- 会话管理
- cookie
- session
- api/token
- linux基础
- lnmp安装
- 命令
- 进程管理
- 扩展安装
- 端口监控
- 防火墙说明
- php7.0
- 部分新特性
- php回调/闭包
- 回调事件
- 闭包/匿名函数
- php多进程
- 多进程开启
- 进程通信
- 进程信号
- 僵尸进程
- 孤儿进程
- 守护进程
- 同步/异步
- 阻塞/非阻塞
- 协程
- Swoole
- 初始Swoole
- 运行机制
- 生命周期
- composer使用
- EasySwoole
- 设计理念
- 组件说明
- 运行过程
- demo
- 提问的艺术