PHP-FPM fastcgi_finish_request可靠吗?
发布时间:2020-12-13 17:22:46 所属栏目:PHP教程 来源:网络整理
导读:在fastcgi_finish_request()之后在我的php脚本中实现一些后处理之后;声明,我担心一些差异. 看起来PHP在fastcgi_finish_request之后没有执行所有脚本. 在日志文件中,我找不到关于此部分的通知,没有警告,没有错误或违规行为. 使用文档中未提及的fastcgi_finish
在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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |