ホームページ >バックエンド開発 >PHPチュートリアル >PHPページのset_time_limit関数の最大実行時間が機能しない
set_time_limit は効果がないか、無効な解決策です
<?php global $begin; global $end; $begin = microtime(TRUE); try { $dsn = "mysql:host=localhost;dbname=kaixin"; $db = new PDO($dsn, 'root', '111'); $db->exec("set names 'utf8'");//默认编码 $db->setAttribute(PDO_ATTR_ERRMODE, PDO_ERRMODE_EXCEPTION); for($i=1; $i<5000; $i++){ $sql = "insert into `article` (`title`, `content`, `time`, `author`, `ip`) value ('文章标题".$i."', '内容".$i."', '1227237892','kaixin','127.0.0.1')"; $db->exec($sql); } $end = microtime(TRUE); // by bbs.it-home.org $time = $end-$begin; echo "执行了".$time."s"; } catch (Exception $e) { echo "Failed: " . $e->getMessage(); } ?>
このコードを実行すると、約 1000 個のデータしか挿入できないため、ページは実行されません。 テスト ページの実行時間は約 29 秒です。つまり、ページの最大実行時間は 30 秒です。
set_time_limit 関数を理解すると、ページの実行時間を設定できます。
set_time_limit 関数は次のように使用されます:
この関数は、ページの最長実行時間を設定するために使用されます。デフォルト値は 30 秒で、php.ini の max_execution_time 変数で設定されます。0 に設定すると、最大時間は制限されません。この関数を実行すると計算が開始されます。たとえば、デフォルトが 30 秒で、この関数が実行される前に 25 秒が実行されており、この関数を使用してそれを 20 秒に変更すると、ページの最大実行時間は 45 秒になります。
この set_time_limit 関数をプログラムに追加すると、
ページの実行時間がまだ約 29 秒であることがわかり、機能しません。
ネット上でphp.iniのsafe_modeがオンになっているとこの関数は実行されないと言っている人を見かけました。 php.inでsafe_mode=offをチェックしました。
for ループに set_time_limit(0); を追加してみてください。
<?php ... for($i=1; $i<5000; $i++){ set_time_limit(0); $sql = "insert into `article` (`title`, `content`, `time`, `author`, `ip`) value ('文章标题".$i."', '内容".$i."', <?php set_time_limit(0); global $begin; global $end; $begin = microtime(TRUE); ... ?> '1227237892','kaixin','127.0.0.1')"; $db->exec($sql); } ... ?>
も機能しませんでした。最後に、インターネットで「set_time_limit 関数は Linux で実行するのが最適で、Windows で実行すると効果がない可能性がある」と言っているのを見つけました。おそらく Windows システムを実行しているため、この機能に完全に自信を失いました。
php.ini では max_execution_time = 30 のみを変更できます。デフォルトは 30 秒ですが、max_execution_time = 300 に変更しました。Apache サーバーを再起動します。 その結果、実行時間は約140秒で、最終的に5,000個のデータが挿入されました。 Windows でのこのページの実行時間は依然として php.ini で制御されているようで、max_execution_time を変更します。 PDO を使用して MYSQL にデータを挿入する場合。 5,000 個のアイテムを挿入するには約 140 秒、10,000 個のアイテムを挿入するには約 260 秒かかります。
上記は、PHP ページの最大実行時間の内容です。set_time_limit 関数が機能しない場合は、PHP 中国語 Web サイト (www.php.cn) を参照してください。
関連記事:
php set_time_limit() ページの実行時間を設定する php set_time_limit(0) プログラムの実行時間を設定する関数 set_time_limit — スクリプトの最大実行時間を設定する