[PHP-users 34269] Re: コンテンツ出力がされたかどうか知る方法
linux @ acoustype.com
linux @ acoustype.com
2009年 2月 4日 (水) 14:26:47 JST
ヨコタと申します
> 半角スペースを画面出力して ブラウザのタイムアウトを防ぐようにしたい
set_time_limit(0);
これで、半角スペースを画面出力しなくても、
タイムアウトはしなくなりませんか?
set_time_limit
http://jp2.php.net/manual/ja/function.set-time-limit.php
On Wed, 04 Feb 2009 12:55:26 +0900
shounari <ml @ shiftra.jp> wrote:
> 肥田と言います。
>
>
> コンテンツがすでに出力済かどうかを知る方法を探しています。
>
> 重いDB処理をいくつも行う必要があるため、ひとつのSQLが終わる度に
> 半角スペースを画面出力して ブラウザのタイムアウトを防ぐようにしたい
> と考えています。
> それをDB処理モジュールで行いたいのですが、画面出力が行われていない
> タイミングでも そのモジュールは利用するため、なんらかのスイッチを
> 付ける必要があります。
>
> すでにプログラムが膨大なサイズとなっているため、全部の画面側・もしくは
> コマンドライン側に ひとつひとつスイッチを付けて回るのは避けたいので、
> 考えたのは コンテンツ出力がされていれば上記処理を行うという仕様です。
>
>
> 検討したのは以下の通りです。
>
> headers_sent() により、これが送信済の場合は コンテンツも出力済として扱う。
> →headerを出力した後、コンテンツを出力する前に、DBの処理を行う部分も
> あるため、不具合の原因になる。
>
>
> set_error_handler() にて、PHPのWarningを捕まえるようにし、怒られたら
> なんらかの処理を行う。
> →怒られるのは コンテンツ出力後に headerを出力した場合であるため、
> その場合での対応は困難。
> また、DBモジュールのためにエラー処理まで手を付けるのは避けたい。
>
>
> ob_start() をし、ob_get_length()にて出力サイズを得る。
> →そもそも ob_start()をしている場合は画面出力をしていないので、出力サイズを
> 得ることはできない。
> また、DBモジュールが画面の出力を操作するのは避けたい。
>
>
> headers_sent()のように、コンテンツが出力済かどうかを得る方法があれば
> 解決なのですが、何かご存知の方はいらっしゃいませんか?
>
> Cannot modify header information の Warning文中には、どこでコンテンツ出力が
> 開始されたのかが書かれているので、PHPの内部的には情報を持っているようです。
>
>
> よろしくお願いします。
>
> ---
> 肥田昌也 ml @ shiftra.jp
>
> _______________________________________________
> PHP-users mailing list PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://oldwww.php.gr.jp/php/novice.php3
--
yokota @ acoustype.com <yokota @ acoustype.com>
PHP-users メーリングリストの案内