2012-03-01 4 views
7

コマンドラインでCTRL + CをPHPで処理するにはどうすればよいですか? WindowsでPcntl_*の機能が動作しません。WindowsのPHP CLI:Ctrl-Cコマンドの処理?

+0

あなたは何を達成しようとしていますか? –

+0

['SetConsoleCtrlHandler'](http://www.php.net/manual/en/function.w32api-register-function.php)(http:// msdn。 microsoft.com/en-us/library/windows/desktop/ms686016(v=vs.85).aspx)しかし、それはここで荒々しく推測しています...そしてかなり間違っている可能性があります。 – Wrikken

+0

@ダゴン私はそれを中断するとき何かをするために私のスクリプトが必要です。たとえば、終了する前に、メモリ内のXML DOMをファイルに書き込んでください。 – x74x61

答えて

0

非常に長い時間がかかるコマンドライン経由でPHPでタスクを実行したい場合は、バッジで整理して、すでに行われていることを把握しようとします。

これで、リスト全体が処理された後ではなく、各バッジを完全に処理(例:処理してからXMLファイルに保存)できます。その間のクラッシュ/ストップは1つのバッジだけをキャンセルし、それらのすべてをキャンセルすることはありません。

各バッジの後に現在の位置を保存すると、スクリプトがクラッシュしたり停止したりしたときに簡単に再開できます。

OSプロセスリストをチェックしてスクリプトが実行中かどうかを確認すると、クラッシュしてまだ実行されていない場合はX分ごとにスクリプトを開始するcronジョブを作成できます。

ので、TL、すべてが幸せになるまでDRすでに開始

  • でプロセスを実行するための最後に正常に処理バッジ
  • チェックの

    • プロセスの仕事の小さなバッジ
    • ストア位置が継続的にスクリプトを起動します!

    私は小さなコマンドラインジョブのためにPHPを好きですが、あなたがこのような大きなタスクを持っているならば、他のものがより適しているかもしれません。長い間安定して動作し、進行状況を示す手段があるかどうかを確認します。おそらく、最小限のGUIを備えた小さなC#アプリです。

  • +0

    探している場所ではCtRL + Cの解決策ではないかもしれませんが、実際の解決策です。私はPHPがプロセスの異常終了を処理できるかどうか疑問に思う!あなたは "register_shutdown_function"であなたの運を試してみるかもしれません。 – ToBe

    +0

    さて、pcntl_signalがありますが、それはUnixシステムのみです。 –