私は古いphp/mysqlスタイルで書かれたテキストベースのゲームサイト(マフィアゲーム)を持っています。私はPHP/MYSQLの知識があまりなく、私はそれを学んでいます。だから私はajax経由で5秒ごとにリロードするファイルの1つに問題がある、それはメッセージ、フォーラムメッセージ、転送、攻撃などをチェックするいくつかのMySQLクエリを含んでおり、フォーラムのメッセージ、転送、攻撃など私のサイトは現在VPSを使用しています。リフレッシュレートを5秒に設定すると数秒以内にVPSがオーバーレイされ、リフレッシュ時間を20秒以上に設定する必要があります。クエリやPHP/PHPコードを最適化するための提案に問題があるかどうかを知りたい。誰にでもMysqlのクエリオーバーロードVPS
<script type="text/javascript" >
var onOff=false;
var replyText='';
window.onload=mainF;
function hideRedNotif()
{
document.getElementById('redNotif').style.display='none';
}
function mainF()
{
fetchNotif();
Updtr=window.setInterval(fetchNotif,25000);
}
function toggleNotif()
{
document.getElementById('redNotif').style.display='none';
if(onOff==false)
{
document.getElementById('parentReply').style.display='';
onOff=true;
}
else
{
document.getElementById('parentReply').style.display='none';
onOff=false;
}
}
function getAjxObject()
{
try {
var o=new XMLHttpRequest();
}
catch(exception)
{
var o=new ActiveXObject('Microsoft.XMLHTTP');
}
return o;
}
function fetchNotif()
{
roundN=document.getElementById('roundName').value;
var o=getAjxObject();
o.open('GET','notifAjx.php?openSes=in&&tru='+roundN,true);
o.onreadystatechange=execute;
o.send();
function execute()
{
if(o.readyState==4 && o.status==200)
{
var countF=0;
resp=o.responseText;
rsp=resp.split('#');
dom=document.getElementById('notifM');
dom.innerHTML=rsp[0];
//document.getElementById('chatRoller').innerHTML=rsp[1];
//if(rsp[1]!=replyText)
//{
//document.getElementById('redNotif').style.display='';
//replyText=rsp[1];
//}
}
}
}
function sendReply()
{
var o2=getAjxObject();
roundN=document.getElementById('roundName').value;
m=document.getElementById('replyText').value;
msg='&&reply=1&&msg='+m;
url='notifAjx.php?tru='+roundN+msg;
o2.open('GET',url,true);
document.getElementById('replyText').value='';
o2.onreadystatechange=execute;
o2.send();
function execute()
{
if(o2.readyState==4 && o2.status==200)
{
}
}
}
</script>
UPDATE-ありがとう:以下は、5秒ごとに
<?php
include("funcs.php");
global $tab, $time, $id, $tru, $old;
$round=$_GET['tru'];
$tO=0;
$moFo='r'.$round.'_mafiosi';
$brd=$tab['board'];
$query="select msg,atk,ivt,transf from $moFo where id='$id'";
$result=mysql_query($query);
$ans=mysql_fetch_assoc($result);
foreach($ans as $key=>$value)
{
$tO+=$value;
}
$rtn='#'.$mafioMsg;
echo "$tO$rtn";
?>
#以下
および再ロードする必要が私のファイルajax.phpのコードは、私が使用していますjqueryの/ Javascriptをされています私の問題をチェックするために、私は私のDBテーブルのスクリーンショットを撮った。それが助けになるか、私に他に何を提供すべきかを教えてください。
私はどんな提案/助けに感謝します。
おかげ&よろしく のPrashantに
クエリが非常に遅い場合は、データベーステーブルに問題がある可能性があります。あなたはそのテーブルにインデックスを持っていますか? – applechief
あなたのIDフィールドは主キーですか? (あなたのMySQLテーブル構造を投稿してください)また、サーバー上で遅いクエリを記録し、このクエリがどれくらいかかるかを確認できますか?問題に応じて、テーブル構造を改善し、エンジンをInnoDBに変換することが役に立ちます。 – Ynhockey
あなたの質問は、フルテーブル構造( 'SHOW CREATE TABLE $ moFo'の出力)、' SHOW INDEXES FROM $ moFo'およびクエリのEXPLAINの詳細で更新してください。 – nnichols