Nginx + php-fpm 执行 PHP 脚本超时 报错 502 Bad Gateway 的解决办法

上周写好的发送邮件的计划任务只发送了一部分,检查计划任务日志,发现 502 Bad Gateway 的错误(已经在脚本中设置了 set_time_limit(0))。

后来在网上查找资料,可以通过以下设置来解决脚本超时导致 502 Bad Gateway 的问题(Nginx + php-fpm,CentOs 系统):

① Nginx 设置

修改 nginx.conf:

fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;

重启 nginx。

② php-fpm 设置

修改 php-fpm.conf:

request_terminate_timeout = 0s

重启 php-fpm:

kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`

502 问题得到解决。

另外最好设置一张数据库表来记录哪些用户的邮件已经发送成功,这样在脚本终止之后重新执行不会重复发送邮件。

时间: 2024-08-12 02:36:19

Nginx + php-fpm 执行 PHP 脚本超时 报错 502 Bad Gateway 的解决办法的相关文章

LNMP安装后子域名访问工程报错502 Bad Gateway

LNMP安装好nginx.mysql.php后,放好代码,搭建完数据库,使用 IP/工程名 可以正常访问,但是给这个工程配置了子域名,用子域名访问就直接报错 502 Bad Gateway 解决这个问题,进入到PHP安装目录,比如/usr/local/php/conf,编辑文件php-fpm.conf,将 [www] listen = /tmp/php-cgi.sock 修改为: [www] listen = 127.0.0.1:9000 其中,这个修改的端口9000,可以从nginx的配置中获

MSSQL执行大脚本文件时,提示“内存不足”的解决办法

导出了一个脚本文件,将近900M,回来往sql studio一丢,报了个内存不足,然后就有了此文.. 问题描述: 当客户服务器不允许直接备份时,往往通过导出数据库脚本的方式来部署-还原数据库, 但是当数据库导出脚本很大,用Microsoft SQL Server Management Studio执行脚本时,往往会遇到"内存不足"的提示. 解决办法: 用微软自带的sqlcmd工具,可以导入执行.以SQL Server 2008R版本为例: 第一步:Win+R 键入:cmd 命令,开启命

MS SQL2008执行大脚本文件时,提示“内存不足”的解决办法

问题描述: 当客户服务器不允许直接备份时,往往通过导出数据库脚本的方式来部署-还原数据库, 但是当数据库导出脚本很大,用Microsoft SQL Server Management Studio执行脚本时,往往会遇到“内存不足”的提示. 解决办法: 用微软自带的sqlcmd工具,可以导入执行.以SQL Server 2008R版本为例: 第一步:Win+R 键入:cmd 命令,开启命令行工具: 第二步:键入:cd C:\Program Files\Microsoft SQL Server\10

SQL SERVER 2008R2 执行大脚本文件时,提示“内存不足”的解决办法

我把一个数据库的架构及数据都已脚本的方式拷贝下来,再去新建一个数据库想把脚本执行一下,但提示如下错误: 问题描述: 当客户服务器不允许直接备份时,往往通过导出数据库脚本的方式来部署-还原数据库, 但是当数据库导出脚本很大,用Microsoft SQL Server Management Studio执行脚本时,往往会遇到"内存不足"的提示. 解决办法: 用微软自带的sqlcmd工具,可以导入执行.以SQL Server 2008R版本为例: 第一步:Win+R 键入:cmd 命令,开启

nginx 502 Bad Gateway 错误解决办法

一些运行在Nginx上的网站有时候会出现“502 Bad Gateway”错误,有些时候甚至频繁的出现.以下是小编搜集整理的一些Nginx 502错误的排查方法,供参考: Nginx 502错误的原因比较多,是因为在代理模式下后端服务器出现问题引起的.这些错误一般都不是nginx本身的问题,一定要从后端找原因!但nginx把这些出错都揽在自己身上了,着实让nginx的推广者备受置疑,毕竟从字眼上理解,bad gateway?不就是bad nginx吗?让不了解的人看到,会直接把责任推在nginx

SQLITE报错database is locked的解决办法

用firedac连接SQLITE数据库,空间tdbedit绑定字段name,如下语句修改其值时报错. procedure TForm1.Button3Click(Sender: TObject);begin fdquery.Edit; fdquery.FieldByName('name').AsString:='test2'; fdquery.post;   //执行到这里报错 [FireDAC][Phys][SQLite] ERROR: database is locked. 换成refres

python 报错 Using deprecated class PySimpleApp 解决办法

今天在做python 脚本练习的时候,因为是复制网上代码来学习,运行脚本时遇到 python 提示如下这一行报错代码: wxPyDeprecationWarning: Using deprecated class PySimpleApp. 解决方法也很简单,就是把倒数以下几行代码中的把wx.PySimpleApp() 替换为 app = wx.App() 或 wx.App(False) 即可. if __name__ == '__main__':        app = wx.App()   

git clone 报错:fatal: index-pack failed 解决办法

[email protected] MINGW64 /d/Users/xxx/venv/program (master) $ git clone https://github.com/XXX/program. git Cloning into 'program'... remote: Enumerating objects: 1417, done. remote: Counting objects: 100% (1417/1417), done. remote: Compressing obje

WAS Server 启动报错无法找到秘钥解决办法

报错日志: [7/18/17 18:04:24:582 CST] 0000000a ORBRas        E com.ibm.ws.orbimpl.transport.WSTransport createServerSocket P=254162:O=0:CT ORBX0390E: Cannot create listener thread. Exception=[ org.omg.CORBA.INTERNAL: CAUGHT_EXCEPTION_WHILE_CONFIGURING_SSL