目前建立一個通知頁面,列出其中包含大約每一筆的通知信息的用戶通知所有登錄的。
例如,如果沒有信息
You have an unread message
隨着信息
<Sarah> Sent you an message
問題
由於通知需要諸如用戶名(用於消息通知)的數據或文章的標題(說你跟隨作者,他們發佈一個新的博客帖子,一個通知將需要拉usern ame形成用戶表,然後也是博客表中的博客標題),這導致我的頁面即使在本地主機上也滯後,我猜測一旦上傳並在野外進行測試,它會變得更糟糕。
目前代碼
function showNotifications($userid){
$STH = $this->database->prepare('SELECT * FROM notifications WHERE user_id = :userid ORDER BY timestamp DESC');
$STH->execute(array(':userid' => $userid));
while($row = $STH->fetch(PDO::FETCH_ASSOC)){
$this->sortNotif($row);
}
下面關於功能快速解釋,因爲我有不同類型的I創建一堆ID的特定類型的通知,例如類型1 =新的消息,類型2 =新的博客文章
function sortNotif($notif){
switch ($notif['type']) {
case "1":
$msg = $this->getMessageData($notif['feature_id']);
$user = $this->userData($msg['sender']);
echo '<li><i>'.timeAgo($notif['timestamp']).'</i><a href="user.php?username='.$user['username'].'">'.$user['first_name'].'</a> sent you a <a href="inbox.php?message='.$msg['id'].'">message</a></li>';
break;
}
}
正如你所看到的只是顯示一個用戶擁有它創建2查詢的,一旦通過40個左右通知循環,在100個左右的用戶一個新的消息成爲對T的應變他服務器。
最後的話
如果有人需要了解更多信息請諮詢我一定會盡快更新這個問題,謝謝!
編輯
下面是表的結構如下面的評論請求。
通知
id | user_id | feature_id | type | timestamp | read
用戶
id | username | password | first_name | last_name | email | verify_hash | avatar | type
消息
id | receiver | sender | replying_to | deleted | body | timestamp | read
你可以採取替換它們sortNotif函數中的switch/case語句中的一些常見代碼?你使用MySQL EXPLAIN或其他什麼來分析你的查詢嗎?那裏有優化的任何範圍? – Maximus2012
我使用了一個我在網上找到的小型php代碼片段,並多次測試多個頁面。 notification.php頁面的頁面生成時間爲0.6599秒。而所有其他「頁面生成0.0467秒」。另外,頁面實際上明顯慢得多。如果你想,我可以嘗試另一種方法來測試速度,如果有什麼建議嗎? – Harry
在這種情況下,是否會有其他可能會減慢最終頁面的內容? JavaScript或圖像可能? – Maximus2012