PHP+Mysqlでチャットアプリを開発しています。
私の考えは、ユーザーが新しいメッセージを受け取ったかどうかを確認するために、1分間ロードし続けるバックグラウンド(ajax)でスクリプトを開くというものでした。
ここにあります
$start = time();
while(time() - $start < 60)
{
$result = mysql_query("SELECT * FROM messages WHERE `to` = '$me_user'");
if(mysql_num_rows($result))
{
$row = mysql_fetch_array($result);
$id = $row['id'];
$from = $row['from'];
$time = $row['time'];
$msg = $row['message'];
mysql_query("DELETE FROM messages WHERE id = $id");
die("appendMsg('$msg',to,'$time');");
}
$result = null;
Sleep(2);
}
したがって、実際には2秒ごとに新しいメッセージをチェックします。
しかし、私の問題は、このためにウェブサイト全体が「遅れ」始めることです。問題は Sleep() にあると思います。
DB への接続中に PHP がタイムアウトすることもあります。
致命的なエラー: 19 行目の C:\xampp\htdocs\chatly\config.php で最大実行時間が 30 秒を超えました
どうすれば2秒間一時停止できますか? それとも、ajax 経由で 2 秒ごとに新しいリクエストを送信するほうがよいと思いますか?