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

时间:2019-08-27 06:31:11

标签: php codeigniter nginx cron forge

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

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

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

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运行时,都会发送大约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

site-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问题,还是我应该在代码库中以某种方式处理它。

谢谢

1 个答案:

答案 0 :(得分:0)

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

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

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