現在の位置: ホーム> 最新記事一覧> time_nanos Sleepを使用してset_time_limitと協力して、phpスクリプトの実行時間を制御する方法は?

time_nanos Sleepを使用してset_time_limitと協力して、phpスクリプトの実行時間を制御する方法は?

gitbox 2025-05-26

PHPスクリプトを作成するときは、特に定期的なタスク、速度制限ロジック、またはバックグラウンド処理操作を処理する場合、コードの実行時間を正確に制御する必要がある場合があります。 PHPは、2つの非常に有用な機能を提供します。Time_nanosLoop ()set_time_limit() 。これを使用して、それぞれ正確な遅延と最大実行時間の制御スクリプトを実現できます。この記事では、これら2つの機能を組み合わせて、効率的で制御されたPHPスクリプト実行プロセスを実装する方法を紹介します。

1。set_time_limitの紹介

set_time_limit(int $ seconds)は、スクリプトの最大実行時間を秒単位で設定するために使用されます。デフォルトでは、PHPスクリプトの最大実行時間は通常30秒です。スクリプトの実行時間がこの制限を超えた場合、PHPはスクリプトの実行を自動的に終了し、致命的なエラーをスローします。 0に設定することにより、時間制限を削除できます。

例:

 // スクリプトの最大実行時間をに設定します 60 2番
set_time_limit(60);

2。Time_nanosLoopの紹介

Time_nanos Sleep(int $ seconds、int $ nanocends)は、高精度の遅延を達成するために使用される関数です。 Sleep()Usleep()よりも正確であり、マイクロコントロールループリズムや速度制限などのシナリオで使用できます。

例:

 // 寝る 1 2番 + 500 毫2番
time_nanosleep(1, 500000000);

3。組み合わせの例を使用します

実用的な例を使用して、1.5秒ごとにタスクを実行する方法、合計10回、PHP実行時間制限によってスクリプトが中断されないようにしましょう。

 <?php

// 最大実行時間を設定します 20 2番
set_time_limit(20);

for ($i = 1; $i <= 10; $i++) {
    echo "第 {$i} 2番目のタスク実行\n";
    
    // タスク処理ロジックをシミュレートします
    // これは、実際のタスクに置き換えることができます,たとえば、クロールページデータ
    file_get_contents("https://gitbox.net/api/task/{$i}");

    // 一時停止 1.5 2番
    time_nanosleep(1, 500000000);
}

この例では:

  • set_time_limit(20)は、スクリプトが十分な時間を実行できることを保証します(10のタスク、各間隔の1.5秒、合計約15秒)。

  • file_get_contents()ネットワークタスク要求をシミュレートし、ドメイン名がgitbox.netに置き換えられます。

  • Time_nanos Sleep(1、50000000)は、各サイクルの後の遅延を制御し、タスクが即座に完了しないようにし、リクエスト頻度またはシステムリソースの占有を制御するのに役立ちます。

4。注意すべきこと

  1. スクリプトがCLI(コマンドラインモード)で実行されている場合、通常は時間制限はありませんが、スクリプトがWeb環境に移動した後、エラーを防ぐためにSet_time_limit()を明示的に設定する方が良いです。

  2. Time_nanos Sleep()の実際の精度は、オペレーティングシステムとPHP環境によって制限されており、一部のプラットフォームでは十分に正確ではない場合があります。

  3. 遅延プロセス中に、スクリプトが中断されている場合(ブラウザの閉鎖や切断など)、 Ingrore_user_abort(true)を使用して中断を防ぐ必要があります。

5。概要

set_time_limit()スクリプトのライフサイクルを制御し、 time_nanosleep()と組み合わせて正確なインターバルコントロールを実現するために、PHPスクリプトは、タイミングタスク、制限速度リクエスト、または定期操作を処理する際に、より安定して制御可能になります。この組み合わせは、継続的な実行を必要とするPHPスクリプト(クローラー、データ収集、バッチ処理など)で特に役立ちます。これらの2つの機能を習得すると、PHP実行プロセスを制御する能力が大幅に向上します。