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

时间:2011-04-14 03:42:31

标签: php jquery traffic

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

5 个答案:

答案 0 :(得分:2)

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

使用AJAX中的XMLHttpRequest来加载动态内容会好得多。无论您决定使用何种技术,都不应该每秒拨打一次电话以获得响应式更新。

答案 1 :(得分:2)

如果你决定这样做,这里有一些想法可以减少服务器密集度。

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

答案 2 :(得分:1)

如果你必须每秒都这样做(尽管和其他人一样,我建议你不要经常打电话给服务器),看看像Memcached或APC这样的东西让请求变得微不足道在自然界。不要在每个请求上点击数据库,如果可能的话,直接从缓存中提供。

另外,请查看Long Polling和Node.JS,它将允许构建更实时的内容。

答案 3 :(得分:0)

想象一下 -

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

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

答案 4 :(得分:0)

阅读答案......然后我想到了将流量处理到Facebook需要多少钱。或任何其他有此类出席的网站。当然,你必须正确处理交通,但它本身并不是一个问题。它是NORMAL,这完全取决于两个基本因素:1)您实际计划服务的用户数量和2)您的服务器功能有多强大