[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 メーリングリストの案内