运行cron作业时出现网关超时错误

问题描述 投票:0回答:1

任何人都可以建议在共享软件上运行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条记录。请建议除服务器升级之外的任何解决方案非常感谢!!

php laravel-5 cron
1个回答
0
投票

您的问题有多种解决方案。如果您正在使用带有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
© www.soinside.com 2019 - 2024. All rights reserved.