您的位置:首页 >  新闻中心 > 开发者专区
  开发者专区
 

使用PHP编写HTTP服务器

来源:原创    时间:2018-01-25    浏览:0 次

PHP开端作为一个专门为Web开发量身定制的言语,自身供给了底层的语法、函数和机制让咱们具有了超高的Web开发功率,运用PHP就相当于运用其他言语附加上了一个Web结构。咱们具有十分好用的$_GET, $_POST超大局数组,以及十分令人省心的单进程模型:每次恳求对应一个进程,让咱们无需理睬线程安全、细小的内存走漏和资源的整理。可是这些长处像咱们屏蔽了一些底层的细节。追根溯源,回到Web开发的源头,运用PHP完成一个HTTP效劳器而且运转PHP事务代码,应该是一件很风趣的作业, 这有助于咱们了解HTTP协议和HTTP效劳器的作业原理,以及HTTP效劳器是怎样与PHP合作作业。
1-1G12Q35F5c4.png在这篇文章中我将会介绍怎么用PHP完成一个能够运转内置Web结构的HTTP效劳器。先从怎么完成一个Socket效劳器接纳网络恳求开端, 探求怎么解析HTTP协议,处理HTTP恳求和回来呼应。接下来结合多进程拓宽完成一个多进程的效劳模型, 再结合Libevent完成一个事情驱动的非堵塞网络调用。为了约束恳求的数量,完成对资源的合理分配和运用,咱们会树立一个作业的进程池来处理恳求行列。最终我会运用Symfony/Console编写一个命令行程序和看护进程用来办理HTTP Server。

需求留意的是这个项目只是作为PHP Web结构的容器效劳器。为了简化开发,这个效劳器不会支撑完好的HTTP协议,所以会运用Nginx作为反向代理效劳器来支撑完好的HTTP协议。

一个简略的Socket Server (套接字效劳器)

解析HTTP协议

根据Pcntl拓宽的多进程作业模型

及时封闭衔接

运用libevent事情驱动

多进程作业模型拓宽:作业进程池

编写看护进程和命令行参数

运用Nginx作为反向代理效劳器

跋文

假如你对运用PHP进行网络编程感兴趣,我引荐Workman和Swoole这两个项目。 前者是运用纯PHP代码完成的网络库,后者是 韩天峰 开发的PHP拓宽。二者都支撑开发Socket/WebSocket/Http Server。