2011-09-13 153 views
1

私はジョブIDを返送する非同期Webサービスを使用しています。その後、完全な応答は、PUT要求を使用してXMLファイル(jobId.xml)としてWebサービスから私のサーバーに送信されます。PHPでファイルが存在するのを待つ方法は?


Webサービスへの要求を発行し、ジョブIDを取得した後、私 ファイルがのPUTディレクトリに作成されるまで を待つための最良の(最も効率的な)方法だろう何を知りたいのですが私のサーバー?


私は、各実行の間に、タイムアウトとはusleep()とFILE_EXISTのループ()を考えています。

しかし、もっと良い方法があると確信しています。 リスナーのようなもの...

ファイルが到着するまでに1秒未満かかる場合があります。

ありがとうございます!

答えて

1
  1. inotifyを使用して、一部のディレクトリのファイル作成を監視できます。

  2. また、PUTハンドラを変更してスクリプトに通知することもできます。たとえば、あなたはそれが書かれたファイル

+0

どれが最も効率的でしょうか?私はそれを広範囲に使用しなければならない。 – benjisail

+0

私は両方とも同等に効率的だと思います。スクリプトが作成されたときにスクリプトが待機し、起動するまで待ちます。 – arnaud576875

1

あなたがPHPを必要とする場合、私は理解していなかったが(ブロッキング)それから読み取る名前付きパイプを作成し、パイプ1に書き込むようにあなたのPUTハンドラを修正することができますプロセスはアクティブなままにしておく(リターンせずに死ぬ)かしないか。

そうでない場合は、incrontabの使用を検討してください。
これはcronjobのようなものですが、あらかじめ設定された時間に実行されるのではなく、ファイルの変更に従って実行されます。ディレクトリを聞くように設定することができます。ファイルシステム上でファイルの作成が完了すると、incronjobは必要なプログラムを起動します。

これはunix/linux OS用のソリューションです。あなたはあなたのOSについて言及していませんでした。

+0

linux-only inotifyを使用しています。 – arnaud576875

+0

CentOSにあります – benjisail

+0

はいこの場合、プロセスをアクティブにしておく必要があります。しかし、私はincrontabを知らなかったし、他のアプリケーションにも役立つかもしれない! – benjisail

関連する問題