PHP プログラミングでは、現在実行中のスクリプトを停止または閉じる必要がある場合があります。一般的な状況は次のとおりです:
この記事では、さまざまな状況で PHP スクリプトを停止するための PHP のいくつかの方法を紹介します。
PHP の exit() 関数は、スクリプトの実行を正式に停止する唯一の方法です。この関数は、終了ステータス コードを指定するオプションのパラメーターを受け入れることができます。
例:
// 停止脚本执行,并返回状态码为1 exit(1);
注: exit() が呼び出されると、PHP は現在のスクリプトの実行を直ちに停止し、php.ini の max_execution_time 値は影響しません。同時に、exit() 関数は外部プログラムまたはスクリプトの呼び出し元にステータス コードを返すこともできるため、状況によっては非常に役立ちます。
die() 関数は exit() 関数とほぼ同じ効果がありますが、関数名が異なります。 die() 関数は、オプションのステータス コード パラメーターも受け入れます。
例:
// 停止脚本执行,并返回状态码为2 die(2);
違いは、die() 関数が指定された文字列を直接出力できることです。この文字列は、ブラウザに返されるコンテンツとして使用されます。
例:
// 停止脚本执行,并输出一段提示字符串 die('操作失败,请重试!');
スクリプトの実行中に、予測できない状況が発生した場合は、次のことが必要です。スクリプトを停止します。このとき、ある条件を判断することでスクリプトを停止することができます。
例:
// 判断两个整数相加是否超过了指定阈值 $a = 100; $b = 200; $limit = 150; if (($a+$b) > $limit) { die('计算结果超过了限制!'); }
上記のコードは、2 つの整数を加算した結果が指定されたしきい値を超えるかどうかを判断し、超えた場合はスクリプトを停止し、エラー メッセージを出力します。
特殊なケースでは、スクリプトを停止するためにシステムシグナル (SIGTERM、SIGHUP、SIGINT など) を受信する必要があります。ランニングから。現時点では、信号処理関数を自分で記述することができます:
例:
// 自定义信号处理函数 function sig_handler($signo) { switch ($signo) { case SIGTERM: echo "收到停止信号,正在执行清理操作!\n"; exit; break; case SIGHUP: echo "收到重启信号!\n"; break; case SIGUSR1: echo "收到自定义信号!\n"; break; default: // 处理其他信号 } } // 捕捉指定的信号 pcntl_signal(SIGTERM, "sig_handler"); pcntl_signal(SIGHUP, "sig_handler"); pcntl_signal(SIGUSR1, "sig_handler"); // 下面是脚本执行的主体部分 echo "脚本正在运行...\n"; while (true) { // 循环执行某个任务 }
上記の例では、最初に信号処理関数 sig_handler() を定義し、次にそれをキャプチャします。 pcntl_signal() 関数はこれらの信号を扱います。 SIGTERM シグナルを受信すると、プログラムはプロンプト テキストを出力し、実行を終了します。
pcntl_signal() 関数は Unix/Linux 環境でのみ使用可能であり、PHP のコンパイル時に (--enable-pcntl オプションを追加して) 有効にする必要があることに注意してください。
概要
上記は、PHP スクリプトを停止するいくつかの方法ですが、その中でも exit() と die() は最も一般的に使用されるメソッドであり、使い方は簡単で、明らかな効果があります。条件に基づいてスクリプトを終了する方法はより柔軟であり、実際の状況に応じて調整できます。必要に応じて、システム信号を受信する信号処理関数を設定し、スクリプト停止関数を実装できます。
以上がPHPスクリプトを停止する4つの方法を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。