首页 > 作文

PHP中的SAPI是什么,都有那些模式?

更新时间:2023-04-08 20:18:43 阅读: 评论:0

SAPI 即 Server API ,是应用程序与外部程序的通讯协议。
在PHP源码的sapi目录下就是当前版本提供的SAPI列表:

apache2handlercgiembedclilitespeedphpdbg

编译后你就会看到php, php-cgi, php-fpm三个可执行程序。

如果是在win环境下会看到php.exe, php-cgi.exe文件。

php在cli模式下运行的程序,用来解释运行PHP代码。php-cgi实现了fastcgi协议的程序。当你使用phpstudy构建WNMP环境的时候,phpstudy它会启动一个php-cgi进程并监听9000端口,然后你需要配置nginx的fastcgi_pass参数。如果觉得一个进程不够用,可以自己启动多个,使用命令 php-cgi.exe -b 127.0.0.1:9001 -c D:\phpStudy\PHPTutorial\php\php-7.2.1-nts\php.iniphp-fpmfastcgi process manager 即用来管理fastcgi进程,php-fpm程序实现了fastcgi并可以优雅的管理多进程,因为php-cgi是单个的进程,并发处理能力很弱,当然你也可以手动多开,但是依然难以管理,而fpm的出现主要是解决这个问题的,描写樱花的句子当然它不是简单的管理php-cgi,而是重新实现了fastcgi协议并增加了很多管理功能,目前只有Linux环境可以用。

那么,如何知道当前PHP程序是运行在哪个SAPI下呢?

<?phpecho PHP_SAPI;?>

分别通过nginx,apache,命令行访问;会依次返回 fpm-fcgi, apache2handler, cli。
或者
命令行下 php -i |grep API
Server API => Command Line Interface

web环境下

<?phpphpinfo();?>

找到 Server API FPM/FastCGI

并且由此可以看出,在不同的运行模式下,查看phpinfo得到的信息是不一样的,因为php会根据当前模式优化默认配置以及php.ini的配置。

SAPI从使用场景来看大致有:

1CLI(Command Line Interface),即命令行接口;2CGI(COmmon G身上洁白如玉ateway Interface);即通用网关接口,也就是要走网络通讯。

至于什么是cgi, fastcgi 不是这小学四年级班主任工作计划里要讨论的内容,可以移步 https://blog.csdn.net/raoxiaoya/article/details/103280995

那么为什么PHP要使用fastcgi呢,还搞出这么多运行模式?

为了配合apache服务器,实现了 apache2handler。
为了配合nginx服务器,实现了 fastcgi。
之前还有基于IIS的协议实现。
。。。五年级下册英语期末试卷。。。
究其原因,PHP是单线程的,这就决定了如果用PHP程序来作为web服务器,其并发能力有限,但是基于nginx+php-fpm架构,其瓶颈也在php-fpm进程,但是也正是因为这种架构才使得PHP在早些年得以发展起来,我们知道java开发的web应用就不需要实现fastcgi,它只需要配合nginx的负载均衡等功能即可;当然目前关于母爱的诗句基于swoole的应用也不再需要fastcgi,与java服务一样的运行,但是如果swoole能早点出现,PHP就不是现在的局面了。

关于SAPI的实现细节可参考鸟哥的文章 /d/file/titlepic/2831.html

本文发布于:2023-04-08 20:18:40,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/fc08a2230abac89fce3e2256182eed5f.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:PHP中的SAPI是什么,都有那些模式?.doc

本文 PDF 下载地址:PHP中的SAPI是什么,都有那些模式?.pdf

标签:程序   进程   实现了   环境
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图