我将根据有限的信息来回答,我必须按照行业标准以最广泛的方式帮助您。你不需要以你现在的方式编码,因为它效率很低,而且坦率地说很危险。
这是运行间隔轮询所需的 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 也有大量的扩展,它们可以作为聊天媒介来提供支持,如果这就是你所追求的。