WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:PG_EXECをキャンセルしたい!

0:[投稿] mazda [2002/08/28 10:29 ][環境:WIN+IE UNIX系+OTHER]

Linux7.2+PHP+Postgresで開発を行っています。
PG_EXECで、サーバーにリクエストを送った物を、
クライアント側のブラウザ上で、中止または閉じるを押した
タイミング、または一定以上の時間が経ったリクエストを
自動的にキャンセルする方法は無いのでしょうか?
requestCancelの使い方がいまいち解りません・・・

もしくは、Linux上で一定時間たったリクエストをKillする方法
等は無いのでしょうか?


1:[回答] TOM neko [2002/08/28 15:32 ]

ここは読みましたか?
http://www.php.net/manual/ja/features.connection-handling.php


2:[回答] popo [2002/08/28 15:50 ]

Linux7.2+PHP+Postgresは良くわからないのですが、書き込み時ではないですよね?

データベース書き込み時にkillをして、プロセスをダウンさせると、問題が出ませんか?書き込みが途中になるかも知れない。


3:[回答] mazda [2002/08/29 09:22 ]

TOM nekoさん
過去に拝見したことがあります。
set_time_limit() では、PHPスクリプトの実行が止まるだけで、
すでにリクエストを送ったSQLまではキャンセルされません。
これは検証済みです。
connection_timeout() ではこれも、接続は切れるけどサーバで
すでに実行中のSQLはそのまま実行されつづけますよね。

popoさん
もちろん書き込み時にはそんなことはしません。
あくまでもSELECTに対してのみ行いたいのです。
というか、SELECT以外はそんなに時間かからないので・・・


4:[回答] popo [2002/08/29 09:39 ]

環境はperlなのですが、参考までに。

http://www.parkcity.ne.jp/~chaichan/qanda/qa3022.htm?02-08-21-10-46


5:[回答] TOM neko [2002/08/29 10:57 ]

http://www.php.net/manual/ja/function.pg-query.php
旧名pg_exec()はpg_query()と名前を変えたらしい。
http://www.php.net/manual/ja/function.pg-cancel-query.php
pg_query()はキャンセルできないが、pg_send_query()ならpg_cancel_query()でキャンセルできる。

というわけで、pg_send_query()に変えて良いなら、接続処理のページに書いてあるように、register_shutdown_function()を使ってスクリプト終了時にpg_cancel_query()を呼び出せばいいのかも。

ブラウザのキャンセルは、スクリプト側からはデータを送って初めて確認できるので、定期的に出力する必要があります。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World