对于传统PHP的Web开发而言,最常用的是LNMP架构。
    在LNMP架构中,当请求进入时,WebServer会将请求转交给PHP-FPM,PHP-FPM是一个进程池架构的FastCGI服务,内置了PHP解释器。
    PHP-FPM负责解释执行PHP文件并生成响应,最终返回给WebServer展现至前端。
    由于PHP-FPM本身是同步阻塞进程模型,在请求结束后会释放掉所有资源,包括框架初始化创建的一些列对象,从而导致PHP进程进入“空转”消耗大量CPU资源,最终导致单机的吞吐能力有限。
    另外,在每次请求处理的过程都意味着一次PHP文件解析、环境设置等不必要的耗时操作,当PHP进程处理完后就会销毁,无法在PHP程序中使用连接池等技术实现性能优化。
    针对传统架构的问题,Swoole从PHP扩展下手,解决了上述问题。相比较传统的Web架构,Swoole进程模型最大的特点在于多线程Reactor模式处理网络请求,使其能轻松应对大量连接。
    除此之外,Swoole是全异步非阻塞,因此占用资源少,程序执行效率高。
    在Swoole中程序运行只解析加载一次PHP文件,避免每次请求的重复加载。
    再者,Swoole进程常驻,使得连接池和请求之间的信息传递的实现成为可能。
    使用Swoole开发时,需要开发人员对多进程的运行模式有着清晰的认识。
    另外,Swoole很容易造成内存泄露。
    在处理全局变量、静态变量的时候要小心,这种不会被GC清理的变量会存在整个生命周期中。
    如果没有正确的处理,很容易消耗完内存。
    而在PHP-FPM下,PHP代码执行完毕内存就会被完全释放掉。