这段时间看了一下关于用Apache或Nginx搭配fastcgi来运行php的资料,资料上说“用了fastcgi后,PHP解释程序被载入内存而不用每次需要时从存储器读取”,这是否说在fastcgi模式下,更新服务器上的php文件都会有延时或者如java那样要重启服务器才行呢?

解决方案 »

  1.   

    只看过Lighttpd的fcgi,原理很简单,每次lighttpd收到php请求, 试图连接fcgi进程, 如果失败, 那么立即创建一个新的子进程, 让它也bind在fcgi端口监听, 就是这样扩增fcgi进程的.每个fcgi进程就是一个简单的tcp server,可以使AF_INET或者AF_LOCAL的,所有fcgi都bind在同一个端口,采用"lock-accept-unlock"的监听手法, 其他就没什么了. 主要是lighttpd如何判断非阻塞connect fcgi成功还是失败主要是看errno是EINPROGRESS还是conenct立即成功,其他的错误都是因为fcgi进程全部繁忙中, 那么lighttpd会再fork一个fcgi进程。
      

  2.   

    资料上说“用了fastcgi后,PHP解释程序被载入内存而不用每次需要时从存储器读取”
    模块方式不就是这样吗?
    不应该是困惑,而应该是高兴请注意 PHP解释程序 与 php文件 的区别