php-fpm:fastcgi_finish_request()
开始研究php-fpm, 在php-fpm的官网上发现一些很有用的功能,记录一下
1、支持php脚本执行慢的log记录
; The timeout for serving a single request after which a PHP backtrace will be ; dumped to the 'slowlog' file. A value of '0s' means 'off'. ; Available units: s(econds)(default), m(inutes), h(ours), or d(ays) ; Default Value: 0 ;request_slowlog_timeout = 0 ; The log file for slow requests ; Default Value: not set ; Note: slowlog is mandatory if request_slowlog_timeout is set ;slowlog = log/$pool.log.slow
2、提供一些非常有用的函数,特别是
fastcgi_finish_request() // a special function to finish request & flush all data while continuing to do something time-consuming (video converting, stats processing, etc.)
关于该函数,火丁笔记做了记录和实验,鸟哥做了转载和补充,这里整理一下
1 <?php 2 3 //代码的可移植性讲的话, 可以在代码中附上如下代码: 4 if (!function_exists("fastcgi_finish_request")) { 5 function fastcgi_finish_request() { 6 } 7 } 8 9 echo '例子:'; 10 file_put_contents('log.txt', date('Y-m-d H:i:s') . " 上传视频\n", FILE_APPEND); 11 12 //结束和客户端的交互,将结果刷出 13 fastcgi_finish_request(); 14 15 //服务端继续执行代码 16 sleep(1); 17 file_put_contents('log.txt', date('Y-m-d H:i:s') . " 转换格式\n", FILE_APPEND); 18 19 sleep(1); 20 file_put_contents('log.txt', date('Y-m-d H:i:s') . " 提取图片\n", FILE_APPEND);
参考:
php-fpm网站 http://php-fpm.org/
火丁笔记 http://huoding.com/2011/04/12/63
鸟哥 http://www.laruence.com/2011/04/13/1991.html