我正在尝试创建一个简单的脚本,用于使用jQuery和PHP从mysql中获取通知(我的代码如下)。目前,jquery每秒都会获得loadmore.php并更新包含它的div。我只是想知道如果网站流量很大,这可能会给服务器带来太大的压力吗?
源代码: index.php -
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/
libs/jquery/1.3.0/jquery.min.js"></script>
<script type="text/javascript">
var auto_refresh = setInterval(
function ()
{
$('#notifications').load('loadmore.php');
}, 1000); // refresh every 10000 milliseconds
</script>
<body>
<div id="notifications"> </div>
</body>
</html>
loadmore.php -
<?php
include('config.php');
?>
<?php
$sql=mysql_query("select * from updates ORDER BY item_id DESC LIMIT 9");
while($row=mysql_fetch_array($sql))
{
$msg_id=$row['item_id'];
$message=$row['item_content'];
?>
<?php echo $message; ?><br />
<?php } ?>
答案 0 :(得分:2)
如果每个打开页面的用户每秒都要请求loadmore.php,那么您很快就会使服务器瘫痪(假设您有多个用户)。可以这样想:如果普通用户每隔一两分钟点击一次链接,那么服务器负载就会增加60-120倍。
使用AJAX中的XMLHttpRequest
来加载动态内容会好得多。无论您决定使用何种技术,都不应该每秒拨打一次电话以获得响应式更新。
答案 1 :(得分:2)
如果你决定这样做,这里有一些想法可以减少服务器密集度。
答案 2 :(得分:1)
如果你必须每秒都这样做(尽管和其他人一样,我建议你不要经常打电话给服务器),看看像Memcached或APC这样的东西让请求变得微不足道在自然界。不要在每个请求上点击数据库,如果可能的话,直接从缓存中提供。
另外,请查看Long Polling和Node.JS,它将允许构建更实时的内容。
答案 3 :(得分:0)
想象一下 -
每位用户每秒钟一次 1000个活跃用户 等于 1000次点击/秒+所有其他流量
我会说这会杀死大多数服务器。如果你打算这样做,你需要一个强大的解决方案来处理这种流量。
答案 4 :(得分:0)
阅读答案......然后我想到了将流量处理到Facebook需要多少钱。或任何其他有此类出席的网站。当然,你必须正确处理交通,但它本身并不是一个问题。它是NORMAL,这完全取决于两个基本因素:1)您实际计划服务的用户数量和2)您的服务器功能有多强大