我使用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
糟糕的编程习惯?"
答案 0 :(得分:0)
1,首先,你应该使用php-fpm,而不是旧的fastcgi模块
2,php中的exit
并不意味着退出当前进程。该文档已经说过,特别是当php在fastcgi服务器上运行时。它只是中止了intepretor会话。该过程继续,从nginx / apache连接池中选择另一个http请求,php-fpm再次调用引擎。