我使用foreach循环发送邮件以获取控制器的codeigniter方法中的收件人信息,并且如果发送邮件,我将收件人表中的收件人状态更新为“已发送” 。获取foreach运行时的行数
在同一个控制器的另一个方法中(使用相同的模型),我得到未发送邮件的数量,但是如果我试图在发送时收到未发送邮件的数量,它会等到foreach循环完成。
如何在foreach循环中发送未发送邮件的数量?
recipients table
id int 11
recipient_id int 11
mail_id int 11
sent tinyint 1
failed tinyint 1
$recipients = $this->MMails->GetRecipients($mail_id);
foreach($recipients as $recipient) {
//send message using swift
if($message_sent) {
$this->MMails->MarkAsSent($recipient_id);//this recipient table gets updated actually, but I can't read the new COUNT value until this loop finished
}
}
从型号:
function GetNumOfQueued() {//Get number of queued mails
$query = $this->db->query("SELECT COUNT(id) as num_of_queued
FROM recipients
WHERE sent = 0");
return $query->row()->num_of_queued;
}//GetNumOfQueued
function MarkAsSent($recipient_id) {//Update mail recipient status to sent
$this->db->set('sent', 1);
$this->db->where('id', $recipient_id);
$this->db->limit(1);
$this->db->update('recipients');
}//MarkAsSent
简单地说,PHP不响应,直到循环被完成,我不能在应用程序中打开的任何其他页面而循环被激活。
设置在我的本地的php.ini中output_buffering =关
这就是我想要的,但我不能得到的数量,同时在循环被激活,既不使用jQuery或PHP – mpet