使用PHP退出FastCGI的最佳实践

时间:2015-03-07 00:20:30

标签: php apache nginx cgi fastcgi

我使用exit运行了一些代码,一旦遇到错误就中止处理请求。我不是PHP专家,但我对FastCGI处于较高水平的直接反应是,它会退出这个过程并且通常是一个坏主意。对于Nginx和我目前的PHP,情况并非如此,但使用古老的Apache版本this was a problem。关于FastCGI的PHP文档是pretty sparse,但它确实提到了fastcgi_finish_request,它看起来像是完成请求的优雅方式。

exit的文档不清楚它是否对FastCGI有任何性能影响,但它存在脚本,而不是进程存在微妙的区别。 header的文档实际上使用了exit,我在several Stack Overflow posts中找到了模式,但理由是#34;所以你不要&# 39; t发送一个身体,"不是"如果你在标题后没有发出一个正文,那么正文将会为空,重定向将按预期工作。"

我还发现conflicting answers是否会导致问题。那,和Dreamhost recommends against exit when using FastCGI(尽管他们在Perl中的例子)。它肯定会导致问题的一个地方是单元测试。

所以我的问题是:在PHP网页中使用exit的最佳做法是什么? fastcgi_finish_request是更好的选择吗?重组控制流程会更好吗?人们报告的问题是Apache特有的吗?或者这只是"的另一个版本是多个returns糟糕的编程习惯?"

1 个答案:

答案 0 :(得分:0)

1,首先,你应该使用php-fpm,而不是旧的fastcgi模块 2,php中的exit并不意味着退出当前进程。该文档已经说过,特别是当php在fastcgi服务器上运行时。它只是中止了intepretor会话。该过程继续,从nginx / apache连接池中选择另一个http请求,php-fpm再次调用引擎。