1

テーブルデータを行ごとにmysqlテーブルにインポートしているときにcodeigniterを使用しています。このテーブルでは、行が25000を超えているため、あるテーブルから読み取って別のテーブルに挿入するのに時間がかかります。

http://domain.local/importdataのようにスクリプトを実行するたびに、いくつかの行をインポートした後、実行時刻を確認した後、常に正確に120秒でスクリプトが停止することに気付きました。

set_time_limit(0);を試しました。しかし、それでも120秒後に停止します。

phpinfo()では、デフォルトのmax_execution_timeが300であることを示しています。

さらに、私はWindowsマシンでzendサーバーを使用しています。

前もって感謝します。

4

3 に答える 3

3

まず、使用する必要のある関数はset_time_limit()です。

単なるタイプミスだとすると、サーバー管理者がサーバーに制限を課している可能性があります。これは、その制限を超えることができないことを意味します。どこかに無限ループがあり、コードがタイムアウトしない場合を想像してみてください。確認するには、set_time_limit(0)を使用して、phpinfo()を実行してみてください。出力に2つの値が表示されます。右端の列には、PHP構成にあるマスター値と、もう1つは優先されるローカル値です。

Zendのマニュアルには、実行時間が長いファイルには使用しないでくださいと記載されています。ファイルをブラックリストに登録する方法の指示に従ってください。また、Apacheを使用している場合は、etcディレクトリのzendenabler.confのRequestTimeoutとConnectionTimeoutを確認してください。それが止まる理由は、PHPのせいではなく、ApacheまたはZendのせいだと思います。

于 2012-09-15T16:46:55.793 に答える
2

Windows上でZendServerを使用している場合、これで問題が解決する可能性があります。

Zendサーバーヘルプ:configuration_php_timeouts_under_windows_apache

于 2013-07-15T10:06:43.610 に答える
0

120秒も一般的なブラウザのタイムアウト期間です。

于 2012-09-21T22:43:37.677 に答える