我打算根據我所掌握的有限信息來回答,以儘可能最廣泛的方式幫助您遵循行業標準。你不需要按照你現在的方式進行編碼,因爲它非常低效且非常危險。
這裏是運行intervaled投票所需的MooTools的代碼(我用MooTools的,你說你正在使用Joomla,我假設你使用1.6或更高版本1.5是EOL本月):
//this sets how often you want to update (in milliseconds).
setInterval('chatPoll()',2000);
//this function essentially just grabs the raw data
//from the specified url and dumps it into the specified div
function chatPoll()
{
var unixTimestamp Math.round(new Date().getTime()/1000)
var req = new Request({
method: 'get',
url: $('ajax-alert').get('http://www.yoururltoupdate.com/file.php?last=' + (unixTimestamp-2),
data: { 'do' : '1' },
onComplete: function(response) { response.inject($('my-chat-wrapper')); }
}).send();
}
你的PHP文件看起來應該是這樣的:
get_messages($_GET['last']);
function get_messages($last_id) {
$sql = 'SELECT * FROM #__messages WHERE `id` >'.intval($last_id);
$db->setQuery($sql);
$rows = $db->loadAssocList();
if (count($rows)>0) {
echo json_encode($rows);
}
}
我還沒有完全測試此代碼,但它應該工作,如果沒有一定會幫助回答您的查詢至於如何你在做什麼試圖做到應該實現而不是你最初發布的方式。如果你真的想要花點心思,你也可以檢查node.js。 Joomla還有很多擴展功能,如果這是你以後的工作,它可以作爲支持用途的聊天媒介。
請問爲什麼你不使用JS或HTML刷新來更新聊天客戶端而不是模擬長輪詢?這不是批評,只是確保你已經考慮過所有的選擇。 – udjamaflip 2012-01-16 21:54:59
我正在使用一個mootools JSON.Reuqest到我的服務器端php get_messages函數。 – user889349 2012-01-17 12:09:21
我建議你不要嘗試從服務器端進行長輪詢,而是使用JS來執行刷新。你喜歡這樣回答嗎? – udjamaflip 2012-01-18 20:40:06