• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:phpで異なるクライアント間で同じ変数を参照したい)

phpで異なるクライアント間で同じ変数を参照する方法は?

このQ&Aのポイント
  • php初心者です。異なるクライアント間で同じ変数を参照したいのですが、SESSION変数やSERVER変数ではできないようです。
  • チャットシステムでは、複数のクライアントが参照できる変数に更新情報を格納することで、データベースの呼び出し回数を減らすことができます。
  • データベースの呼び出し回数を減らすためには、異なるクライアント間で情報を共有するメカニズムを実装する必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

> 異なるクライアント間で参照できる変数はありますか? ありません。 異なるプロセスなので変数の中身(メモリー空間)を直接共通することはできませんので サーバ上のファイルかDBを使って共有することになります。 > それともデータベースを毎回呼び出していても速度的には問題ないでしょうか? クライアント数や、データサイズによります。 でも、それが気になるなら、 DBへのアクセスのコストよりも、 もしも、ブラウザでリロードするたびに全画面を更新をするという仕組みだとすると、 その全HTMLをサーバー上で毎回生成して、そのフルデータをクライアントに通信で送る というコストのほうを気にされたほうが よいと思います。 たとえば、AJAXで、ブラウザからは前回の更新時刻を送り出し、 サーバからはそれ以降で更新されたデータのみを戻してもらって、 ブラウザで既に表示済の画面の適所にJavaScriptでインサートするようにすれば かなりデータを削減できますよ。 なお、これの応用で、 AJAXの命令を受けたサーバで、すぐに応答するのではなく、 誰もチャットへの書き込みがないときは しばらくAJAXの応答をしないで待たせておいて、  だれかの書き込みをキックにして応答するようにすると あたかもリアルタイムなチャットシステムに見せることができますよ。

exdnkrs
質問者

お礼

回答ありがとうございます! > ありません。 > 異なるプロセスなので変数の中身(メモリー空間)を直接共通することはできませんので > サーバ上のファイルかDBを使って共有することになります。 なるほど、phpが呼び出されるごとに独立の動作をする・・・という感じですかね。 データベースを使うことにします! > クライアント数や、データサイズによります。 おっしゃる通りです。 一般的にどうしているのか気になったのですが、データベースで問題なさそうで一安心です! > なお、これの応用で、 > AJAXの命令を受けたサーバで、すぐに応答するのではなく、 > 誰もチャットへの書き込みがないときは しばらくAJAXの応答をしないで待たせておいて、  > だれかの書き込みをキックにして応答するようにすると > あたかもリアルタイムなチャットシステムに見せることができますよ。 これは面白いですね! ajaxを使った非同期の通信は(見よう見まねで)行っているのですが、サーバ側で保留できるとは知りませんでした。 参考にしてみます! 勉強になりました。 ありがとうございました!

すると、全ての回答が全文表示されます。