两种办法
一、调整nginx处理ph-fpm的时间
nginx.conf 里面主要是如下
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
php-fpm.conf 里如要是如下
request_terminate_timeout =10s
二、php使用fastcgi_finish_request()提前返回给客户端结束会话
此函数冲刷(flush)所有响应的数据给客户端并结束请求。 这使得客户端结束连接后,需要大量时间运行的任务能够继续运行。
返回值:成功时返回 TRUE, 或者在失败时返回 FALSE。
应用场景:如果一个方法耗时较长,可以先返回客户端或页面需要的数据,再进行后续的操作。
<?php
if (function_exists("fastcgi_finish_request")) { // yii或yaf默认不会立即输出,加上此句即可(前提是用的fpm)
fastcgi_finish_request(); // 响应完成, 立即返回到前端,关闭连接
}
ignore_user_abort(true);//在关闭连接后,继续运行php脚本
set_time_limit(0); //no time limit,不设置超时时间(根据实际情况使用)
/**************** 2 告诉前端结果,告诉浏览器完成,但继续运行php ****************/
/**************** 3 继续运行php ****************/
网友回复
为啥所有的照片分辨率提升工具都会修改照片上的图案细节?
js如何在浏览器中将webm视频的声音分离为单独音频?
微信小程序如何播放第三方域名url的mp4视频?
ai多模态大模型能实时识别视频中的手语为文字吗?
如何远程调试别人的chrome浏览器获取调试信息?
为啥js打开新网页window.open设置窗口宽高无效?
浏览器中js的navigator.mediaDevices.getDisplayMedia屏幕录像无法录制SpeechSynthesisUtterance产生的说话声音?
js中mediaRecorder如何录制window.speechSynthesis声音音频并下载?
python如何直接获取抖音短视频的音频文件url?
js在浏览器中如何使用MediaStream与MediaRecorder实现声音音频多轨道混流?