【问题标题】:Would requesting a php script every second put too much pressure on the server?每秒请求一个 php 脚本会给服务器带来太大的压力吗?
【发布时间】:2011-04-14 03:42:31
【问题描述】:

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

加载更多.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 } ?>

【问题讨论】:

    标签: php jquery traffic


    【解决方案1】:

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

    您最好使用 AJAX 中的 XMLHttpRequest 来加载动态内容。无论您决定使用何种技术,您都无需每秒钟拨打一个电话即可获得响应式更新。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        如果您必须每秒都这样做(即使像其他人一样,我建议您不要频繁调用服务器),请查看 Memcached 或 APC 之类的东西以使请求变得微不足道在自然界。不要每次请求都访问数据库,如果可能,直接从缓存中提供它。

        另外,请查看 Long Polling 和 Node.JS,这将允许构建更实时的东西。

        【讨论】:

          【解决方案4】:

          想象一下 -

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

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

          【讨论】:

            【解决方案5】:

            阅读答案...然后我想到将流量处理到 facebook 需要多少。或任何其他有这种出席率的网站。当然,您必须妥善处理流量,但这本身根本不是问题。这是正常的,这完全取决于两个基本因素:1)您实际计划服务的用户数量以及 2)您的服务器有多强大

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2012-09-06
              • 2018-08-19
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-02-26
              • 1970-01-01
              相关资源
              最近更新 更多