私は現在、PHPでキューを作成する方法を教えるチュートリアルに従います。 PHPスクリプトで無限ループを作成しました。当面の問題に焦点を当てるために、コードを簡素化しました。
while(1) {
echo 'no jobs to do - waiting...', PHP_EOL;
sleep(10);
}
私はPuTTy(SSH接続を含む)を使用して共有ホスティングアカウント(godaddy)のLinux端末に接続しています。端末で実行するとphp queuefile.php
問題なく実行されます(既に制限されたコードでテスト済み)。forループ無限の代わりにwhileループ)。
質問:無限ループの開始後にどのように終了できますか?コード生成オプションについてオンラインで読みました。「調査する」繰り返す必要がある場合は、次のコードに似ています。
$bool = TRUE;
while ($bool)
{
if(!file_exists(allow.txt)){$bool = FALSE}
//... the rest of the code
端末にコマンドを入力するか、キーセットを押してスクリプトを終了できるかどうか疑問に思います。スクリプトを終了する方法がある場合、または古いスクリプトを作成するより良い方法がある場合「確認する」、あなたのフィードバックを歓迎します!
答え1
シグナルハンドラがインストールされていないと仮定し、プロセスがフォアグラウンドにある場合は、Ctrl-Cを押してSIGINTをプロセスに送信できます。前景になければ使用できますpkill -INT -f '^php queuefile.php$'
。
デフォルトでphp
はSIGINTを受け取った後に終了します。
何らかの理由でシグナルハンドラがインストールされている場合は、そのシグナルTERM
(デフォルトで使用されますpkill
)を試すことができます。最終的にプロセスを終了する合理的なシグナルが見つからない場合は、次SIGKILL
のように(無差別代入)を使用できます。-TERM
にpkill
渡されます-INT
。