在共享主机上运行cron作业时,谁能为网关超时504 错误提出任何解决方案。我尝试了 sleep 功能,但是没有用,我对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条记录。除服务器升级外,请提出其他解决方案。非常感谢!!
答案 0 :(得分:0)
您的问题有多种解决方案。如果您将NGINX与FastCGI结合使用,请尝试:
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 Config中的更改
最后,在我们的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