4

ある PHP ファイルから別の PHP ファイルの特定のユーザーに「メッセージ」を送信することは可能ですか?

「メッセージ」は、すでに実行されている PHP ファイルで受信できる必要があることに注意してください。そのため、単に他のファイルを呼び出しても違いはありません。下の画像は、私がやりたいことを示しています。

ここに画像の説明を入力してください

この例では、ユーザー 1 が「send.php」を呼び出し、ユーザー 1、2、および 4 の「receive.php」インスタンスにメッセージを送信します。これは可能ですか?

追加情報

ファイルやデータベースなどの中央の場所にメッセージを記録することはできません。これは、100 ミリ秒ごとに約 1 回メッセージをクエリすることになり、データベース/ファイル システムが過負荷になる可能性があるためです。私はそれが瞬時に必要です。

さらに、前述のようにメッセージを複数のユーザーに送信する必要があるため、セッションまたは Cookie を使用できません。最後に、受信した PHP ファイルは、ユーザーがページを離れるまで終了しません (実際には HTML5eventsourceファイルです)。

4

4 に答える 4

0

もっと軽量な方法があるかもしれませんが、pub-sub 機能を備えたメッセージ ブローカー ( JMSの世界ではトピックと呼ばれます) を使用してみてください。サーバーからクライアントに大量のメッセージを迅速かつ確実に転送するために特に作られています。

このようなセットアップ用のテスト システムを作成する簡単な方法は、STOMP対応のメッセージ ブローカー (利用可能なソリューションのリストについてはこちらを参照) を使用し、それを PHP STOMP クライアント (同じページで利用可能なリスト) と組み合わせることです。

永続的なサブスクリプションに関するこの注意事項を必ずお読みください。PHP スクリプトは、メッセージが送信された正確な時間には実行されない可能性が高いため、永続的なサブスクリプションをエミュレートする機能が必要になります。上記のページに記載されているすべてのブローカーを知っているわけではありませんが、ActiveMQは知っていて、かなり前から存在しており、非常に高い評価を得ています。

于 2013-04-08T22:49:28.017 に答える
0

セッションまたはデータベースを使用して、ページ間でデータを永続化できます。

于 2013-04-08T22:36:18.070 に答える
0

追加情報: メッセージをファイルやデータベースなどの中央の場所に記録することはできません。これは、100 ミリ秒ごとに約 1 回メッセージをクエリすることになり、データベース/ファイル システムが過負荷になる可能性があるためです。私はそれが瞬時に必要です。

これは実行できますが、ベスト プラクティスではありません。メッセージごとに個別のファイルを作成することもできます。これは非常に悪い習慣です。

集中型データベースの問題に関しては、誰にもわかりません。これはあなたのリクエストに対応できるかもしれません。試してみてください。

最初の試みですべてを正しくできるプログラマーはいません。彼らは何か新しいことを試み、間違いを犯しました...アプリケーションへの最良のアプローチを見つけるという点では、誰もが間違いを犯します。

于 2013-04-08T22:36:31.633 に答える
-1

PHPはそのようには機能しません。スクリプトを実行して終了します。セッションを検索するか、データベースを使用する必要があります。もっと派手にしたい場合は、jQuery と Ajax を使用してください。

于 2013-04-08T22:34:15.857 に答える