PHP-FPM fastcgi_finish_request可靠吗?

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了PHP-FPM fastcgi_finish_request可靠吗?脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
在fastcgi_finish_request()之后在我的PHP脚本中实现一些后处理之后;声明,我担心一些差异.

看起来PHP在fastcgi_finish_request之后没有执行所有脚本.

在日志文件中,我找不到关于此部分的通知,没有警告,没有错误或违规行为.

使用文档中未提及的fastcgi_finish_request有限制或提示吗?

解决方法

哇,我也受到了这个打击.到目前为止,行为似乎是这样的:
调用fastcgi_finish_request()之后,函数内的任何echo语句就像是一个return语句一样,停止执行该函数.

我会更多地测试它并向bugs.PHP.net提交一个bug,也许吧.

更新:

调用fastcgi_finish_request()后,任何显式或隐式输出刷新都将导致退出PHP脚本,而不会出现任何警告或错误.换句话说,在调用fastcgi_finish_request()之后调用flush()将表现得像调用exIT()而不是flush().

我将创建一个PHP错误票据以万一.

代码重现:
    

function writestamp($case,$file){
  file_put_contents($file,"". $case . ": " . time() . "" . PHP_EOL,FILE_APPEND);
}

// Flush buffers and stop output buffering
while (@ob_end_flush());

// Destroy session,otherwise request can't be finished
if(session_status() > 1) session_destroy();

$file = tempnam(Sys_get_temp_dir(),'flushbug_');
echo 'Writing 4 timestamps to: '.$file;

// this one gets called
writestamp('1',$file);

// and this
register_shutdown_function('writestamp','4',$file);

// finish the request
fastcgi_finish_request();

// as does this
writestamp('2',$file);

// but this one does NOT - calling flush() after fastcgi_finish_request() exits PHP without errors or warnings
flush();
writestamp('3',$file);

https://bugs.php.net/bug.php?id=68772

脚本宝典总结

以上是脚本宝典为你收集整理的PHP-FPM fastcgi_finish_request可靠吗?全部内容,希望文章能够帮你解决PHP-FPM fastcgi_finish_request可靠吗?所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。