ページへ戻る
印刷
PHP で非同期通信
をテンプレートにして作成 ::
XOOPS マニア
UsersWiki
:nao-pon/blog/2006-11-17 をテンプレートにして作成
開始行:
** PHP で非同期通信
#keyword()
RIGHT:&tag(プログラミング);
PHPでWebサーバー側で処理をするとき、更新に時間がかかる処...
ページ表示に直接関係のない処理であれば、バックグラウンド...
PukiWikiMod では、PHPが自身でもう一度Webサーバーにリクエ...
そもそも、ローカルからのアクセスを禁止している場合もある...
そこで、今開発中の xpWiki では、ブラウザとの接続を一旦切...
実際のスクリプトコードは、次のような感じです。
#code(){{{
$_udp_file = $const['CACHE_DIR'].$this->encode($vars['pag...
if (file_exists($_udp_file)) {
$_udp_mode = join('',file($_udp_file));
unlink($_udp_file);
// ブラウザとのコネクションが切れても実行し続ける
ignore_user_abort(TRUE);
// ブラウザにはリダイレクトを通知
$base = preg_replace("#^(https?://[^/]+).*$#i","$1",$con...
$uri = $base.$_SERVER['REQUEST_URI'];
while( ob_get_level() ) { ob_end_clean() ; }
$out = "\r\n";
header("Content-Length: ".strlen($out));
header("Connection: close");
header("Location: " . $uri);
echo $out;
flush();
// ブラウザは再表示し、PHPは実行を継続
sleep(5);
$this->plain_db_write($vars['page'], $_udp_mode);
exit();
}
}}}
これは、 xpWiki の実際のコードで、時間の掛かる検索用テキ...
終了時のイベントが新しいプロセスでリアルタイムに拾えるわ...
----
#comment(,btn:つっこみ)
----
終了行:
** PHP で非同期通信
#keyword()
RIGHT:&tag(プログラミング);
PHPでWebサーバー側で処理をするとき、更新に時間がかかる処...
ページ表示に直接関係のない処理であれば、バックグラウンド...
PukiWikiMod では、PHPが自身でもう一度Webサーバーにリクエ...
そもそも、ローカルからのアクセスを禁止している場合もある...
そこで、今開発中の xpWiki では、ブラウザとの接続を一旦切...
実際のスクリプトコードは、次のような感じです。
#code(){{{
$_udp_file = $const['CACHE_DIR'].$this->encode($vars['pag...
if (file_exists($_udp_file)) {
$_udp_mode = join('',file($_udp_file));
unlink($_udp_file);
// ブラウザとのコネクションが切れても実行し続ける
ignore_user_abort(TRUE);
// ブラウザにはリダイレクトを通知
$base = preg_replace("#^(https?://[^/]+).*$#i","$1",$con...
$uri = $base.$_SERVER['REQUEST_URI'];
while( ob_get_level() ) { ob_end_clean() ; }
$out = "\r\n";
header("Content-Length: ".strlen($out));
header("Connection: close");
header("Location: " . $uri);
echo $out;
flush();
// ブラウザは再表示し、PHPは実行を継続
sleep(5);
$this->plain_db_write($vars['page'], $_udp_mode);
exit();
}
}}}
これは、 xpWiki の実際のコードで、時間の掛かる検索用テキ...
終了時のイベントが新しいプロセスでリアルタイムに拾えるわ...
----
#comment(,btn:つっこみ)
----
ページ名: