ホームページ  >  記事  >  バックエンド開発  >  PHPのset_time_limit()の使い方の詳しい説明 test_PHPチュートリアル

PHPのset_time_limit()の使い方の詳しい説明 test_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:16:201034ブラウズ

PHP の set_time_limit 関数は、ページの実行時間を制限するために使用されます。たとえば、PHP ページの実行時間を 5 秒に定義したい場合は、set_time_limit(5) を実行するだけです。

PHP スクリプトは crontab を通じて 5 分ごとに実行されます。スクリプトの実行時間が 5 分を超えることを考慮して、set_time_limit(290) を使用してスクリプトが 290 秒で終了するように制御します。ある日、バックグラウンドで複数のプロセスがスクリプトを実行していることに突然気づきました。これは、set_time_limit(290) が機能しないことを意味します。それを証明するために、特別に次のコードテストを使用します。

コードは次のとおりです コードをコピー

set_time_limit(5);

for ($i = 0; $i echo date('Y-m-d H:i:s') . "n";
睡眠(1);
}

Web であっても CLI であっても、上記のスクリプトは 5 秒経っても終了しません。その後、ini_set(‘max_execution_time’, 5) テストが追加されましたが、結果は同じでした。ということは、set_time_limit関数はまったく役に立たないということでしょうか?実際、これは当てはまりません。根本的な原因は http://stackoverflow.com/questions/5874950/set-max-execution-time-in-php-cli にあります。たとえば、次のコードを使用します。

コードは次のとおりですコードをコピー
set_time_limit(5);

のため (;;) {

}

実行後、5秒ほどで「致命的エラー:最大実行時間5秒を超えました」のようなエラーメッセージが表示されます。 set_time_limit が機能することがわかります。ここで、注:

に書いた公式ドキュメント (http://www.php.net/manual/en/function.set-time-limit.php) のこの関数の説明を見ていきます。

set_time_limit() 関数と構成ディレクティブ max_execution_time は、system() を使用したシステム コール、ストリーム操作、データベース クエリなど、スクリプトの実行以外で発生するアクティビティに費やされた時間のみに影響します。 . は、スクリプトが実行された最大時間を決定する際には含まれません。これは、測定時間が実際である Windows では当てはまりません。

コードは次のとおりです //set_time_limit(0); $i=1500; インクルード ("inc/conn.php"); while($i>0)
コードをコピー
{
$sql="php (php) に挿入
値 ('$i')";
if ($conn->execute($sql)===flase)
{
//エコー "データ挿入エラー".$conn->errormsg(); }
それ以外は
{
$phpid=$conn->ID の挿入(); echo $i."すでにデータベースに保存されています。番号: ".$phpid; }
$i--; エコー "
"; }
?>


注: スリープ機能の一時停止時間はスクリプトの実行時間には含まれません。それが最初のテストが失敗した理由です。

ページに大量のデータがある場合は、set_time_limit() を使用して実行時間を制御することをお勧めします。デフォルトは 30 秒であるため、set_time_limit(300) など、実行時間を長くする必要があります。秒は 0 に設定されており、継続的に実行されることを意味します。

例: set_time_limit(0) は、リンクが長時間実行されていることを意味します。

注: この関数を実行するには、php.ini でセーフモード = Off を設定し、セーフ モードをオフに設定する必要があります。そうしないと、次のエラーが発生します。

警告: set_time_limit() [function.set-time-limit]: セーフモードでは時間制限を設定できません

もう一度注意してください:

php.ini で、次のように max_execution_time を定義することで、PHP ページの最大実行時間を設定できます:

コードは次のとおりですコードをコピーset_time_limit(900);

この関数は、現在の PHP スクリプトの最大実行時間を指定します。

設定値は900秒ですが、実際には
最大実行時間 = php.ini の max_execution_time 値 - 現在のスクリプトが実行された時間 + 設定値
php.ini で max_execution_time=30 で、現在のスクリプトが 10 秒間実行された場合、次のようになります:
最大実行時間 = 30-10+900 = 920 秒。

PHPのset_time_limitの設定が機能しない場合の解決策:

set_time_limit はスクリプトのタイムアウトを設定するために使用されます。使用方法は次のとおりです。

set_time_limit(秒); これは、プログラムがこの文の実行時から指定された秒数以内に完了するまで実行されなければならないことを規定しています。

タイムアウトが発生すると、プログラムはエラーとなって終了します

ただし、set_time_limit を設定しても効果がない場合があります。set_time_limit 関数は Linux で実行するのが最適ですが、Windows で実行すると効果がない場合があります
解決策:
php.ini の max_execution_time = 30 を変更します。デフォルトは 30 秒ですが、max_execution_time = 300 に変更します。Apache サーバーを再起動します。このように、タイムアウトを 300 秒に設定すると、プロンプト メッセージが表示されます。


http://www.bkjia.com/PHPjc/628681.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/628681.html技術記事 PHP の set_time_limit 関数は、ページの実行時間を制限するために使用されます。たとえば、PHP ページの実行時間を 5 秒に定義したい場合は、set_time_limit(5) を実行します。 cron 経由の php スクリプト...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。