PHP项目,尤其是在高并发、大流量的场景下,如何提高PHP的响应时间是一个非常重要的工作。而Opcache是??优化PHP性能不可或缺的组件,尤其是在应用PHP框架的项目中。一、概述在了解OPCache功能之前,我们需要先了解一下PHP-FPM+Nginx的工作机制和PHP脚本解释执行的机制。1.1PHP-FPM+Nginx的工作机制Web浏览器向Nginx发出请求,再到PHP处理完成,要经过以下五个步骤:第一步:启动服务,启动PHP-FPM。PHP-FPM支持两种通信方式:TCPsocket和Unixsocket;PHP-FPM会启动两类进程:Master进程和Worker进程,前者负责监听端口、分配任务、管理Worker进程;后者是PHP的cgi程序,负责解释、编译和执行PHP脚本。启动Nginx。首先会加载ngx_http_fastcgi_module模块,初始化FastCGI执行环境,实现FastCGI协议请求代理。这里注意:fastcgi的worker进程(cgi进程)是由PHP-FPM管理的,不是Nginx。Nginx只是一个代理Step2:Request=>NginxNginx收到请求,根据location配置,选择合适的handler这里是代理PHP的handlerStep3:Nginx=>PHP-FPMNginx将请求翻译成一个fastcgi请求通过TCPsocket/UnixSocket发送给PHP-FPM的master进程Step4:PHP-FPMMaster=>WorkerPHP-FPMmaster进程收到请求分配一个Worker进程来执行PHP脚本。如果没有空闲Worker,返回502错误Worker(php-cgi)进程执行PHP脚本,如果超时,返回504错误处理完成,返回结果Step5:PHP-FPMWorker=>Master=>NginxPHP-FPMWorker进程返回处理结果,关闭连接,等待下一次请求给PHP-FPMMaster进程通过Socket返回处理结果NginxHandler依次将每个响应缓冲区发送给第一个过滤器→第二个→依此类推→最终响应发送给客户端1.2PHP脚本解释和执行的机制了解PHP+Nginx的整体处理流程最后,我们来看一下PHP脚本的具体执行过程。首先,让我们看一个例子:
