我正在用PHP爲個人創建一個活動提要,並且我正在創建組提要。PHP調用外部腳本
所以我的表
表:組名稱 1.組1 2.組2 3.組3
表:會員 1.組1>成員1,成員2會員3,會員4,會員5 2.第2組>會員3,會員4,會員5,會員5 ....
有些團體有成千上萬的會員。 所以當我發佈飼料時,我正在做類似下面的事情。
$result = $this->db->query('SELECT member_id FROM members WHERE group_id = 1');
$members = $result->fetchAll();
foreach ($members as $member) {
$query = $this->db->prepare('INSERT INTO activity_feed (user_id, activity) VALUES(:user_id, :activity);
if ($result = $query->execute(array(
':user_id' => $member['member_id'],
':activity' => $activity
))) {
//do something
$pusher->push(activity) //socket push notification
}
}
插入個人飼料只需要一個MySQL數據庫插入,whereelse正如你所看到的,對於組喂循環獲取成倍放大,當成員數量的增加。
我正在考慮使用單獨的PHP文件填充活動提要,並在活動發生時執行它。 如何調用單獨的PHP文件?
有沒有更好的主意來解決這個問題?
如果不是每次有人向該組發送消息,或者上傳圖像到該組,然後PHP文件需要一段時間才能執行,則必須經過該循環。
我認爲您要查找的是cron作業。另外,不要在foreach循環中準備查詢。這違反了使用準備好的聲明的一半目的。準備一次,執行很多次。 – miken32
[如何在服務器端計劃PHP腳本的執行?]可能的重複(http://stackoverflow.com/questions/1194857/how-to-schedule-the-execution-of-a-php-script在服務器端) – miken32
@ miken32我瞭解cron工作,但cron工作意味着我無法在事件發生時立即通知成員。 –