php函数fastcgi_finish_request介绍

PHP从版本5.3.3以后提供了一个函数fastcgi_finish_request(),可以用于在fpm环境下,首先发送客户端请求然后进入后台处理大量时间运行的任务。

条件

  • php-fpm fastcgi环境运行PHP脚本

  • 只适合web请求,不适合cli命令使用

场景

  • 适合需要提前发送请求,然后处理大量任务的应用场景。比如:(日志的写入、邮件的发送、信息的推送等)

使用方法

不使用fastcgi_finish_request


<?php echo "hello world!"; // 休眠10秒 sleep(10);

以上代码需要运行至少10秒以后才会返回浏览器 hello world!

使用fastcgi_finish_request


<?php echo "hello world!"; // 加入if判断防止非fpm环境下引起异常错误 if (function_exists('fastcgi_finish_request')) { fastcgi_finish_request() } // 休眠10秒 sleep(10);

以上代码会快速返回浏览器 hello world! 无需等待

注意

  • 此函数可能会在 PHP xdebug 的情况下失效,如果有问题,关闭xdebug是否恢复正常

参考

PHP官方手册: http://php.net/manual/zh/function.fastcgi-finish-request.php

鸟哥介绍: http://www.laruence.com/2011/04/13/1991.html

本文已经被查看471次

发表评论

电子邮件地址不会被公开。 必填项已用*标注