多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[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 个处理邮件的进程 * 针对于消费任务逻辑层面,我们已经是开启了多进程在处理了。