PHP短耗时异步处理

 
 
在PHP Web程序中,发送手机短信、电子邮件、转换视频格式、记录日志、数据挖掘采集等,都是比较耗时的操作。
为了增强用户体验,需要将这些操作转为异步执行
PHP Web程序中的 短耗时异步处理
前提:使用Nginx+PHP(php-fpm FastCGI)架构
PHP-FPM 提供了fastcgi_finish_reques()函数
例1:写日志
<?php
echo ' 输出内容给用户 ';
fastcgi_finish_request();
/* 用户访问完成,不会等待下面的操作。*/
sleep(5); //假设一个耗时的处理过程
file_put_contents('/tmp/logs.txt', ' 记录日志 ');
?>
例2:发送邮件
message("注册成功");	
PATH_SEPARATOR==':' && php_sapi_name()=='cgi-fcgi' && fastcgi_finish_request();   //判断服务器是Linux且是fastCGI模式运行
phpmail($_POST['email'],'英豪校友注册验证',"{$cont['con']}<a target='_blank' href='{$url}'>点击验证</a>");



fastcgi_finish_reques()函数的缺点:
1.
PHP FastCGI 进程数有限,正在处理异步操作的php-cgi进程,无法处理新请求;
2.
如果并发访问量较大,php-cgi进程数用满,新访问请求,将没有php-cgi去处理。Nginx服务器会出现:
502 Bad Gateway。



0
0
 
 

你可能感兴趣的:(PHP短耗时异步处理)