データベースから最新のデータを取得するために、サーバーページが5秒ごとに呼び出されるajaxアプリケーションを開発しました。
応答を取得するために5秒ごとにserver.php
自分のページから呼び出しているとしましょう。client.html
これはclient.htmlのサンプルコードです:
$(document).ready(function() {
refresh_msg();
});
function refresh_msg()
{
setTimeout(update_msg, 5000);
}
function update_msg()
{
var url = "server.php";
var params = "task=update&id=12";
http.open("POST", url, true);
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.onreadystatechange = function() {
if(http.readyState == 4 && http.status == 200) {
var resp = http.responseText;
}
}
http.send(params);
setTimeout(update_msg, 5000);
}
これでserver.phpファイルに、データベースファイル(database.php)を含め、クライアント要求を処理しています。これはサンプルコードです:
<?php
include_once 'database.php';
if(isset($_POST['task']) && isset($_POST['id']))
{
$sql = "select message from user_messages where id='".$_POST['id']."'";
$res = mysql_query($sql);
// send response
}
?>
そして最後に、これは私のdatabase.phpファイルであり、データベース接続の詳細が含まれています。
<?php
mysql_connect("localhost:3306","root","root");
mysql_select_db("my_database");
?>
ここで問題となるのは、5秒ごとに新しいmysql接続が作成されることです(MysqlAdministrator>サーバー接続で多くの接続が作成されるのがわかります)。
データベースをクエリするのに最適な方法ではないと思います。代わりに、1つのmysql接続を使用して、クライアントからの後続のすべてのajaxリクエストに使用できますか?