Как ждать, пока файл будет существовать с php? - PullRequest
1 голос
/ 13 сентября 2011

Я использую асинхронный веб-сервис, который возвращает мне идентификатор задания. Затем полный ответ отправляется веб-службой в виде файла XML (jobId.xml) на мой сервер с помощью запроса PUT.


После отправки запроса в веб-сервис и получения jobID я хотел бы знать, что будет лучшим (наиболее эффективным) способом ожидания пока файл не будет создан в каталоге PUT моего сервера?


Я имею в виду цикл file_exist () с usleep () между каждым выполнением и временем ожидания.

Но я уверен, что есть лучший способ. Что-то вроде слушателя ...

Передача файла может занять от секунды до более 1 минуты.

Спасибо!

Ответы [ 2 ]

1 голос
/ 13 сентября 2011

Я не понял, нужен ли вам процесс php, чтобы оставаться активным (не возвращаться и не умирать) или нет.

Если нет, рассмотрите возможность использования incrontab .
Этокак cronjob, но вместо того, чтобы работать в предварительно настроенное время, он запускается в соответствии с изменениями файлов.Вы можете настроить его на прослушивание каталога, и когда создание файла в файловой системе завершится, incronjob запустит нужную вам программу.

Это решение для ОС unix / linux.Вы не упомянули свою ОС.

1 голос
/ 13 сентября 2011
  1. Вы можете использовать inotify для наблюдения за созданием файлов в некотором каталоге.

  2. В качестве альтернативы вы можете изменить свой обработчик PUT насообщите свой сценарий.Например, вы можете создать именованный канал, прочитать из него (блокировать) и изменить обработчик PUT, чтобы записать в канал, в который он записал, файл

...