运行cron作业时出现网关超时错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了运行cron作业时出现网关超时错误相关的知识,希望对你有一定的参考价值。
任何人都可以建议在共享软件上运行cron作业时出现网关超时504错误的任何解决方案。我已经尝试过睡眠功能,但它没有用,我有以下功能的cron工作 -
public function checkOrderStatus(){
$orders = Order::select('id')
->whereNotIn('status', ['COMPLETED', 'CANCELLED', 'PARTIAL', 'REFUNDED'])
->where('api_order_id', '!=', null)
->orderBy('id', 'desc')
->pluck('id')
->toArray();
$collection = collect($orders);
$chunks = $collection->chunk(20);
$request = new IlluminateHttpRequest();
foreach($chunks as $ids){
foreach($ids as $id){
$request->replace(['id' => $id]);
$rep = $this->getOrderStatusFromAPI($request);
}
sleep(10);
}
}
getOrderStatusFromAPI()函数调用第三方API来获取一些记录。 checkOrderStatus()函数当前在每个cron调用中获取大约300条记录。请建议除服务器升级之外的任何解决方案非常感谢!!
答案
您的问题有多种解决方案。如果您正在使用带有FastCGI的nginx,请尝试:
php.ini中的变化
尝试在php.ini文件中提高max_execution_time设置(CentOS路径为/etc/php.ini):
max_execution_time = 150
PHP-FPM的变化
尝试在php.ini文件中提升request_terminate_timeout设置(CentOS路径为/etc/php-fpm.d):
request_terminate_timeout = 150
Nginx配置中的更改
最后,在我们的Nginx虚拟主机配置中添加fastcgi_read_timeout变量:
location ~* .php$ {
include fastcgi_params;
fastcgi_index index.php;
fastcgi_read_timeout 150;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
重新加载PHP-FPM和Nginx:
service php–fpm restart
service nginx restart
以上是关于运行cron作业时出现网关超时错误的主要内容,如果未能解决你的问题,请参考以下文章
cron 运行网站备份 google drive api 脚本时出现“无效授权”错误
从 Dynamics 365 运行自定义工作流时出现 2 分钟超时问题
AWS - 错误 504 - 网关超时 - Flask 应用程序