本文共 1337 字,大约阅读时间需要 4 分钟。
SAPI: Server Application Programming Interface 服务器端应用编程端口.即php与其他应用交互的接口.
常用的SAPI有:cgi fast-cgi cli apache的DLL
CGI’
CGI即通用网关接口(Common Gateway Interface),他是一段程序,通俗的讲CGI就像是一座桥,把网页和web服务器中的执行程序连接起来,CGI把html接收的指令传给服务器执行程序,再把服务器处理的结果返回 给html页面. CGI方式在发现用户的连接请求时,先创建CGI进程,并使用,然后进行处理,处理完成后结束该子进程.(fork-and-execute),所以使用CGI方式的服务器有多少请求就会创建多少子进程,子进程反复加载是CGI系能低的主要原因.当用户请求非常多时,会占用大量的系统资源.Fast-CGI
更像是CGI的升级版本,FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行者,只要激活后,不会每次都花时间fork一次.php使用php-fpm(FastCGI Process Manager) 全称PHP FastCGI进程管理器进行管理. fastcgi的工作原理 Web Server启动时挂载php-fpm并初始化,启动多个FastCGI解释器进程,并等待Web Server的连接. 当连接到Web Server时,php-fpm选择并连接到一个CGI解释器,Web Server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi.子进程完成处理后,将标准输出和错误信息,返回给Web Server . 当子进程关闭链接是,请求便算是完成. 子进程接着等待并处理来自php-fpm的下一个连接.在CGI模式中,子进程便在这结束了. 在上述过程中,可以想到CGI有多慢,每一个请求php都必须解析php.ini 重新载入全部扩展,并重新初始化全部数据结构,使用FastCGI,所有这些只会在启动时载入一次,并且,持续数据库连接*(Persistent database connection)* 可以工作.APACHE2HANDLER
php作为apache模块,apache服务器在系统启动后,会预先创建多个进程副本驻留内存,等待连接出现,一旦有请求,就立即使用空闲的子进程进行处理,这样就不存在生成子进程时的延迟.这些服务器副本在处理完成后,不退出,而是继续等待请求出现,反应更快,性能更高.CLI
1.完全支持多线程
2.可实现定时任务 3.linux下可用php编写shell脚本 (经常用的东西,还不知道有这么多参数..) 使用PHP CLI传递脚本参数的形式: -a 交互式运行Run interactively -c path 从path读取php的.ini文件 -n 不用读取php的.ini文件就直接运行 -m 列出经过编译的模块 -i 显示有关PHP构建的信息 -l 检查PHP脚本的句法 -s 以彩色方式显示源代码 -w 显示去掉注释之后的源代码 -h 显示帮助至此,我对SAPI有了一定的认识
想了解更多,可以看官方手册:转载地址:http://qyoii.baihongyu.com/