1

私は基本的に、毎分1つのスクリプトを呼び出すcronジョブを持っています。前のスクリプトがまだ実行中の場合、スクリプトはすぐに停止します(前のスクリプトのアクティビティ時間をチェックします)。

それで私はバグを作りました、そしてスクリプトは無限ループに入りました(私はそれが少なくとも一度cronによって呼び出されたことを知っています)。修正を作成してサーバーにアップロードしましたが、それでも疑問に思っています。

  1. バグのあるスクリプトはどのくらい実行されますか?
  2. それがまだ実行されているかどうかをどうやって知ることができますか?
  3. スクリプトを終了する理由とその理由

スクリプトechoは、同じテキストを何度も繰り返し出力します。

スクリプト内のPSPHPの最大実行時間は0(無限)に設定されており、サーバーに直接アクセスすることはできません。FTPのみです。

4

2 に答える 2

0

まだ実行されているかどうかを確認するにはどうすればよいですか?

新しいcronジョブをセットアップするだけですが、cronコマンドをデバッグに役立つものにしてください。便利なものは次のとおりです

ps -af | grep php > /some/path/to/mylogfile.txt

このpsコマンドは、実行中のプロセスに関する情報を一覧表示します。これらのフラグを使用すると、出力の一部はプロセスを開始した元の linux コマンドになるため、行を grep して探すことができますphp。元のコマンドはおそらく次のようなものだったからです。

php myscript.php

出力は にリダイレクトされmylogfile.txt、cron ジョブの実行後に手動で読み取ることができます。

プロセス ID は出力の一部である必要があります。killその後、コマンドを偽の cron ジョブとして入力するだけで、そのプロセス ID でコマンドを使用できます。

于 2013-03-02T16:38:15.943 に答える
-2
  1. スクリプトがタイムアウトになるまで ( max_execution_timephp.ini ファイルまたは set_time_limit メソッドで定義)
  2. 実行中のプロセスを見てみましょう
  3. kill コマンドをスクリプトに送信するか、タイムアウトが発生するまで待ちます

PS: php.ini ファイルが必要です。1 つはコマンド ライン用、もう 1 つは Apache 用です。必ずコマンドラインの ini ファイルの max_execution_time を変更してください。

于 2012-09-25T23:18:44.253 に答える