之前写过一篇《php后台运行最优方案》,是关于php页面由访问者触发后,如何在不影响访问者继续访问,而php程序异步的在后台继续运行(可能异步的这种说法不太合适)的问题。
上次文章的办法还是完美的解决方案,适合各种环境。不过今天要说的是在采用了php-fpm的情况下,一种更简单的办法。
在linux平台,php采用fastcgi的技术的,基本都是通过php-fpm实现的。fpm是php的一个进程管理软件,从5.3版开始默认包含在php安装包(或源码)里面。可以实现php的一些高级管理功能,比如实现虚拟主机的php进程独立。
这里分享的就是fpm添加的一个fastcgi_finish_request()函数,在php代码中调用此函数后,函数之前的内容就会输出,同时中断与客户端浏览器的连接,即客户端表现为php已经运行完成。而实际上还是会继续运行此函数之后的代码。一个小小的函数,就帮我实现了《php后台运行最优方案》中的整个实现过程。