最近准备学习学习swoole,可是发现不知道为什么学他,简单的看了下,什么非阻塞了,提高并发量了。突然发现自己对php并发的原理懵懵懂懂,根本没办法解释。所以想看看php在web程序中是怎么运行的,包括他的瓶颈具体出现在哪里。对于并发量来说,除了运行速度没有java快。还有哪些东西没办法达到java的效果。
首先说下:大部分学web开发的,都明白一个东西,就是用户通过http请求,请求到服务器,然后服务器将用户所需要的内容整理出来返回给用户。但是,当请求到达服务器之后,里面具体发生了什么呢?
对于常规的图片了,音频了,文件了。这些东西web服务器是直接返回给用户的。不需要做处理。可是当请求的是php文件的时候。web服务器就需要对文件进行处理。对于php来说就需要web服务器执行php文件,然后把最后的结果返回给用户。那么web服务器作为一个通俗上来说信息接收和发送的东西,怎么才能认识php的语法并且执行呢?下面来说一说!
首先想调用php程序,需要用到php的sapi。这东西是php的接口,干啥的接口,当然是调用php的接口了。
打个比方就好比,你拿着一堆php代码,去了php家里,人家有个小窗户,接收这些代码,然后把解释过的代码,从小窗户里给你拿出来,sapi就是这么一个小窗户。
那么在来说说apache,nginx等等是怎么执行php的呢?
上面说到了sapi的接口,apache,nginx等等都是通过这些接口执行php的。
常用接口:
php5_module:给apache用的接口。
CGI:给nginx用的(apache也能用,而且比上一个好)
ISAPI:iis用的
CLI:给dos窗口用的(执行脚本)
具体的配置方法,之后再说吧。
总结:其实执行php都是通过sapi接口调取的。