[PHP-users 4958] Re: 時間が掛かるページを実行中に、不正終了してしまう。
BAC
php-users@php.gr.jp
Thu, 24 Jan 2002 20:47:53 +0900
BACです。
クライアント側(ブラウザ)のタイムアウトはサーバ側では制御できません。
サーバがずっと出力を行わなければ、当然、クライアント側はタイムアウトを起
こします。
ループの中でなんらかの出力を行って、ちょろちょろとデータを流してやれば
クライアント側のタイムアウトは防げます。
echo "<!-- \n" ;
for ($i=1;$i<1679617;$i++) {
$b = sprintf ("%04s", base_convert($i,10,36));
$sqlstr = "insert into a_tbl(ran_id) values ('".$b."')";
$rtn = pg_exec($con,$sqlstr);
echo ".\n" ;
flush() ;
}
echo "-->\n" ;
こんなのとか。3Mもコメントを入れるのが嫌なら適当に間引いてください。
仕事で作ったものでは最初にグラフのインジケータを表示、その後ループ内で
バーのGIF画像を送ってプログレスバー風に表示させていました。ユーザ側は進
行状況を表示するだけの機能だと思ってたようでしたが、実はタイムアウトを防
ぐという重要な役割があったのでありました。
On Thu, 24 Jan 2002 19:40:27 +0900
"mots" <angel@cosmos-inc.net> wrote:
> 以下のコードを実行途中に、不正終了してしまうのですが
> 何か理由があるのでしょうか?
>
> 不正終了するタイミング=挿入された件数は、実行時によりまちまちです。
>
> 環境 【php4.1.1,postgreSQL 7.1.3, apache1.3.22】
>
> ---------
> //4桁の英数字のすべての組み合わせ(36の4乗)をDB(PostgreSQL)に登録する。
> // a_tblのran_id(text型)に挿入。
> //データベース接続済み
> for ($i=1;$i<1679617;$i++) {
> $b = sprintf ("%04s", base_convert($i,10,36));
> $sqlstr = "insert into a_tbl(ran_id) values ('".$b."')";
> $rtn = pg_exec($con,$sqlstr);
> }
> ---------
>
> そこで、PHP実行タイムアウト制限の可能性を思い、次の設定にしたにも関わらず毎
> 度不正終了してしまいました。
> php.ini
> max_execution_time = 0;
--------------------------------------------
BAC (bac@dev-nul.com)