任何人都可以建议在共享软件上运行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 \Illuminate\Http\Request();
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