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

502 bad gateway when running cron job

我在 laravel forge 服务器上部署了一个 codeIgniter 项目。 Cron 作业计划每晚 运行。但是当 cron 作业 运行s 它给出

HTTP request sent, awaiting response... 502 Bad Gateway 2019-08-27 06:03:54 ERROR 502: Bad Gateway.

此错误大约在 60-70 秒后出现。 Cron 作业应该向一群用户(50-70 位用户)发送电子邮件提醒。我的cron.phpclass发邮件的代码是

foreach($reminders as $job) {

        $job_ids[]=$job->id;

        $email_message=$this->load->view('email_templates/job_reminder', array('job'=>$job), TRUE);
        $message=$this->load->view('email_templates/template', array('content'=>$email_message, 'header_image'=>'header_proof_reminder'), TRUE);
        $subject='blablabla: '.format_job_name($job->id, $job->job_number, $job->name).' is still awaiting approval';

        $sent = $this->send_job_reminder_emails($job, $subject, $message);

        if($sent){ //Log if an email was sent
            $this->debug_string .= "<p>Email sent for job: ".$job->id."</p>";
        }else{
            $this->debug_string .= "<p>Didn't send email for job: ".$job->id."</p>";
        }
        $this->debug_string .= "<p><br/></p>";

    }

send_job_reminder_emails 函数是发送电子邮件的函数。 每次 cron 运行s 都会发送大约 20,30 封电子邮件,但之后它会停止发送电子邮件,因为我认为是 502 错误。

我为 cron 使用的命令是 wget https://mysite.url/cron/send_reminders

php-fpm 设置为:

max_execution_time = 1000
max_input_time = 200
memory_limit = 512M

在nginx.conf中:keepalive_timeout=300

站点-nginx.cong

location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php/php5.6-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_read_timeout 600;
    fastcgi_buffers 8 16k;
    fastcgi_buffer_size 32k;
    fastcgi_connect_timeout 600;
    fastcgi_send_timeout 600;
}

为了测试,我只是 运行 在服务器上手动执行此 cron 命令

我不确定是什么导致了这个问题。它是 fpm 还是 nginx 问题,还是我应该在代码库中以某种方式处理它。

谢谢

不要通过网络代理使用长时间操作。 使用控制台命令,没有网关也没有超时。

对于 cron 使用与 php-fpm 相同的用户。

/path/to/bin/php -f /path/to/cron/app-reminder-wrapper.php