每秒请求一个php脚本会给服务器带来太大的压力吗?


Would requesting a php script every second put too much pressure on the server?

我试图创建一个简单的脚本,使用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 } ?>

如果打开页面的每个用户每秒都在请求loadmore.php,那么您将很快使服务器崩溃(假设您有多个用户)。这样想:如果普通用户每一两分钟点击一个链接,你就会增加60-120倍的服务器负载。

您最好使用XMLHttpRequest从AJAX加载动态内容。无论你决定使用什么技术,你都不需要每秒钟都打一个电话来获得响应更新。

如果您决定这样做,这里有几个想法可以使它稍微减少服务器密集。

  • 只返回新消息。大多数情况下,你的更新ping将是一个0字节的响应,因此这将减少相当多的流量。使用jQuery将UI限制为9条消息,并添加新消息。
  • 缓存db结果。看起来更新消息对每个用户都是一样的,所以不是对每个更新请求进行DB调用,而是保存结果并只允许每秒1个DB查询。

如果您必须每秒执行此操作(即使像其他人一样,我会建议您不要频繁地调用服务器),请查看Memcached或APC之类的东西以使请求在本质上微不足道。不要在每次请求时都访问数据库,如果可能的话,直接从缓存提供。

还有,看看长轮询和Node.JS,它们将允许构建一些更实时的东西。

想象一下-

每个用户每秒命中一次1000个活跃用户等于1000次点击/秒+所有其他流量

我想说这将杀死大多数服务器。如果您打算这样做,您将需要一个健壮的解决方案来处理这种流量。

阅读答案…然后我想到处理facebook的流量需要多少钱。或者其他有这么多访问量的网站。当然,你必须妥善处理交通,但它本身根本不是问题。这是正常的,这完全取决于两个基本因素:1)你实际计划服务多少用户;2)你的服务器有多强大