※ ChatGPTを利用し、要約された質問です(原文:phpで異なるクライアント間で同じ変数を参照したい)
phpで異なるクライアント間で同じ変数を参照する方法は?
このQ&Aのポイント
php初心者です。異なるクライアント間で同じ変数を参照したいのですが、SESSION変数やSERVER変数ではできないようです。
チャットシステムでは、複数のクライアントが参照できる変数に更新情報を格納することで、データベースの呼び出し回数を減らすことができます。
データベースの呼び出し回数を減らすためには、異なるクライアント間で情報を共有するメカニズムを実装する必要があります。
phpで異なるクライアント間で同じ変数を参照したい
php初心者です。
タイトルの通り、異なるクライアント間で同じ変数を参照したいのですが、SESSION変数やSERVER変数ではできないようなので質問させていただきました。
具体的には、チャットシステムを組んでいます。
チャット内容など詳細なデータはデータベースに記録しているのですが、更新確認のたびにデータベースを呼び出していては遅くなるのではないかと考え、更新があったかどうか(最終更新日時とか)を複数のクライアントが参照できる変数に格納したいのです。
なお、チャットの実装方法としては、クライアント側から定期的(数秒ごと)に更新確認をさせています。ソケット通信というものも試したいのですが、現在の環境ではできないため見送りました。
異なるクライアント間で参照できる変数はありますか?または定義できますか?
それともデータベースを毎回呼び出していても速度的には問題ないでしょうか?
お礼
回答ありがとうございます! > ありません。 > 異なるプロセスなので変数の中身(メモリー空間)を直接共通することはできませんので > サーバ上のファイルかDBを使って共有することになります。 なるほど、phpが呼び出されるごとに独立の動作をする・・・という感じですかね。 データベースを使うことにします! > クライアント数や、データサイズによります。 おっしゃる通りです。 一般的にどうしているのか気になったのですが、データベースで問題なさそうで一安心です! > なお、これの応用で、 > AJAXの命令を受けたサーバで、すぐに応答するのではなく、 > 誰もチャットへの書き込みがないときは しばらくAJAXの応答をしないで待たせておいて、 > だれかの書き込みをキックにして応答するようにすると > あたかもリアルタイムなチャットシステムに見せることができますよ。 これは面白いですね! ajaxを使った非同期の通信は(見よう見まねで)行っているのですが、サーバ側で保留できるとは知りませんでした。 参考にしてみます! 勉強になりました。 ありがとうございました!