2

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 } ?>
4

5 に答える 5

2

ページを開いているすべてのユーザーが毎秒loadmore.phpを要求している場合は、サーバーをすぐに停止します(2人以上のユーザーがいると仮定します)。このように考えてください。平均的なユーザーが1〜2分ごとにリンクをクリックすると、サーバーの負荷が60〜120倍になります。

XMLHttpRequestAJAXを使用して動的コンテンツをロードする方がはるかに優れています。使用するテクノロジーに関係なく、応答性の高い更新を取得するために毎秒電話をかける必要はありません。

于 2011-04-14T03:47:43.103 に答える
2

これを行うことにした場合は、サーバーへの負担を少し軽減するためのいくつかのアイデアを次に示します。

  • 新しいメッセージのみを返します。ほとんどの場合、更新 ping は 0 バイトの応答になるため、トラフィックが大幅に削減されます。jQuery を使用して UI を 9 メッセージに制限し、新しいメッセージを追加します。
  • データベースの結果をキャッシュします。更新メッセージはすべてのユーザーに同じように見えるため、更新要求ごとに DB 呼び出しを行う代わりに、結果を保存し、1 秒あたり 1 つの db クエリのみを許可します。
于 2011-04-14T04:32:45.457 に答える
1

これを毎秒実行する必要がある場合(他の場合と同様に、サーバーを頻繁に呼び出さないようにアドバイスします)、MemcachedやAPCなどを調べて、要求を簡単なものにします。すべてのリクエストでデータベースにアクセスするのではなく、可能であればキャッシュから直接提供してください。

また、よりリアルタイムなものを構築できるようにするLongPollingとNode.JSも確認してください。

于 2011-04-14T04:23:21.520 に答える
0

これを想像してください-

ユーザーごとに毎秒1ヒット1000アクティブユーザーは1000ヒット/秒+他のすべてのトラフィックに等しい

私はそれがほとんどのサーバーを殺すだろうと言うでしょう。その計画を立てる場合は、その種のトラフィックを処理するための堅牢なソリューションが必要になります。

于 2011-04-14T03:48:08.843 に答える
0

答えを読んで...そして、Facebookへのトラフィックを処理するのにどれだけの量が必要かを考えました。または、そのような出席者がいる他のウェブサイト。もちろん、トラフィックを適切に処理する必要がありますが、それ自体はまったく問題ではありません。それは通常のことであり、すべては 2 つの基本的な要素に依存します: 1) 実際にサービスを提供する予定のユーザー数と 2) サーバーの能力

于 2012-06-28T13:18:23.453 に答える