2012-01-10 9 views
0

ここにシナリオがあります: 私はMYSQLにデータを記録しているページを持っています。私はそのデータを読んでそれを見ることができる別のページを持っています。新しいデータが記録されると、最初のスクリプトチェックを行い、閲覧ページがブラウザで開いているかどうかを確認し、最新のデータをビューの最後に追加します。また、誰かがPHPとブラウザがどのように対話するかの概要を示す情報を指すことができますか?私はJavaScriptのDOMダウンのコンセプトを持っていると思うが、PHPのように、ページが送信されるとそれが表示されているように見えます...それを生成したPHPスクリプト以外のHTMLスクリプトからHTML文書にアクセスできますか?

+1

PHPとブラウザの新しい相互作用。 PHPはサーバで実行され、クライアントのブラウザでは... – macjohn

+1

PHPは「ページが表示されているかどうかを確認できません。 PHPスクリプトはオンデマンドで実行されるため、PHPの理解を深めてください。すべてのコードがクライアントのマシンではなくサーバー上で実行されるため、イベントなどのjavascriptとは異なります。クライアントはPHPスクリプトへのURLを要求し、スクリプトが実行され、出力がクライアントに送信されます。 – Rob

+0

OK、ありがとうございました - 私はデータベース内の何かをチェックした後、ページを変更するためにサーバー側でjavascriptを生成するいくつかの厄介なものをやった...しかし、これは私がこれで行うことはできません新しいスクリプトのURLにリダイレクトした後だった場合。私は以下の提案のいくつかを探り、どこに私がかかるかを見ていきます。 – user1123548

答えて

0

これはあなたが記述している限り不可能です。表示ページは、定期的に再読み込みするか、javascript/AJAXを使用して、変更をサーバーにポーリングする必要があります。

PHPによってページが送信されると、それ以上の影響はありません。実際には、出力が完了するとすぐにサーバー上のPHP実行スレッドが強制終了されるため、ページを生成したものはもはや存在しなくなります。

1

PHPが送信されたら正しいと思います。

ページが読み込まれると、PHPページにデータを送信する方法はありません。やや厄介な方法がありますが、これを行う最も簡単な方法は、Ajax経由でページをポーリングすることです。

20秒ごとにスクリプトを作成し、受け取った最後のMySQLログのタイムスタンプを含む別のPHPスクリプトにメッセージを送信し、その時間までに設定されたすべてのデータを返すようにスクリプトを取得します。

私はJavaScriptをどのように使いこなすべきかわかりませんが、これを行う最も簡単な方法は、おそらくJQueryの$ .ajaxを使用して、新しいMySQLレコードをJSONとしてエンコードすることです。

0

定期的にサーバーの更新をポーリングするのではなく、Dolondroの提案を拡張するには、Server-Sent-Events(最新のブラウザーで新しくサポートされている)を使用できます。

これで、基本的には1つのajaxリクエストをサーバーに送信し、接続は開いたままにします。その後、サーバーはいつでも更新を送信できます。ブラウザがイベントを受信すると、そのデータを画面に追加できます。それでもなお、接続は開いたままになり、サーバーは発生したときに追加のイベント/更新を送信できます。

W3Cのページ: http://dev.w3.org/html5/eventsource/

ウィキペディア: http://en.wikipedia.org/wiki/Server-sent_events

詳細: https://www.google.com/search?ix=hcb&sourceid=chrome&ie=UTF-8&q=server+sent+events

関連する問題