PHP jQuery


とあるWebアプリケーションで、ユーザーが入力した内容をバックグラウンドで処理する機能があります。

サーバー側でバックグラウンド処理が終わったら、ブラウザ側のユーザーに処理が終わった事を通知したいのですが、どのように実装すれば良いでしょうか?

jQueryやJavaScriptを利用した事が無いので、分かりやすい例があれば教えて下さい。

回答の条件
  • 1人1回まで
  • 13歳以上
  • 登録:2016/02/21 21:07:41
  • 終了:2016/02/28 21:10:03

回答(2件)

id:Lhankor_Mhy No.1

Lhankor_Mhy回答回数775ベストアンサー獲得回数2302016/02/22 19:03:35

ポイント50pt

 お手軽なのはAjaxによるポーリングですかね。

リバース Ajax の目標は、サーバーがクライアントに情報をプッシュできるようにすることです。Ajax リクエストはデフォルトではステートレスであるため、クライアントからサーバーに対して開始することしかできません。この制約は、応答性の高いクライアント・サーバー間通信をシミュレートする手法を使用することによって回避することができます。

リバース Ajax: 第 1 回 Comet の紹介

 
 モダンなのはWebSocketなんじゃないでしょうか。

本格的にはsocket.ioなどをインストールして~というのがありますが
PHPだけでサクッと体験したい方は続きを御覧下さい。

PHPのみでHTML5のWebSocketを体験する方法 - [Swb:]渋谷に住むWEBデザイナの備忘録
id:webtomake

ありがとうございます

2016/02/24 13:34:15
id:braahmaNa No.2

braahmaNa回答回数23ベストアンサー獲得回数92016/02/24 03:12:26スマートフォンから投稿

ポイント50pt

javascriptやjqueryを利用された事が無いとの事なので、なるべくシンプルにjqueryでajax使うだけが良いのかな、と思いましたので以下の参考URLを回答にしてみました。
jqueryのajaxっていう手法でPHPへリクエスト→処理が終わったPHPがjqueryに結果出力→結果を受け取ったjqueryがユーザーに通知って流れです。

http://kihon-no-ki.com/jquery-php-ajax

id:webtomake

ありがとうございます!

サーバーサイド側で処理が終わったか終わってないかを確認する必要があるため、何秒間に1回はアクセスしなければならないのですが、その場合はどうすればいいのでしょうか?

while()みたいな関数はあるのでしょうか?

それとも例で出して頂いた内容であれば、接続は永遠に続くのでしょうか?

2016/02/24 13:34:04
id:braahmaNa

サーバ側で処理が終わったら勝手にajax内定義の関数が呼び出されるので、自分で確認しに行く必要は無いですよ。
jqueryでは$.ajax内にsuccessっていう名前の関数定義すれば、それが呼ばれます。
その引数にサーバからの出力(echo メッセージとか)も入っているので、その内容に応じた処理をすれば良いかと思います。
webtomakeさんが仰っていた通知もこの関数内での処理で最初は問題無いんじゃないでしょうか。
慣れてきたらerror関数やcomplete関数の使用も検討して、ベターな選択をしてみて下さい。

2016/02/24 18:14:59

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません