我在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问题,还是我应该在代码库中以某种方式处理它。
谢谢
答案 0 :(得分:0)
请勿通过Web代理使用长时间操作。 使用控制台命令,没有网关,也没有超时。
对于cron,请使用与php-fpm相同的用户。
/path/to/bin/php -f /path/to/cron/app-reminder-wrapper.php