1、CGI协议模式
CGI模式,通用网关接口,它允许web服务器通过特定的协议与应用程序通信,调用原理为:用户请求-》web服务器接收请求-》fork子进程调用程序/执行程序-》程序返回内容/程序执行结束-》web服务器接收内容-》返回给用户;由于每次用户请求,都得fork创建进程调用一次程序,然后销毁进程,所以性能较低。
2、fast-cgi协议模式(与CGI是同种协议,开启的进程是单独实现该协议的进程)
fast-cgi是CGI的升级版,它像是一个常驻型CGI,只要开启后,就可以一直处理请求,不再需要结束进程,原理为:web服务器fast-cgi进程管理器初始化-》预先fork n个进程-》用户请求-》web服务器接收请求-》交给fast-cgi进程管理器-》fast-cgi进程管理器接收-》给其中空闲的fast-cgi进程处理-》处理完成-》该进程变为空闲等待下次请求-》web服务器接收返回内容-》返回给用户。
3、模块模式
apache+PHP运行时,默认使用的是模块模式,它把PHP作为apache的模块随apache启动而启动,接收到用户请求时,则直接通过调用mod_php模块进行处理。
4、php-cli模式
属于命令行模式,该模式不需要借助其他程序,直接输入PHP xxx.php就能执行PHP代码,与常规web模式明显不同为:
没有超时时间;默认关闭buffer缓冲;可使用的类/函数不同;php.ini配置不同;STDIN和STDOUT标准输入/输出/错误 的使用;php有些扩展在常规web下运行时没用/没有意义,如swoole扩展和socket扩展;