2011-09-13 5 views
1

작업 ID를 다시 보내는 비동기 웹 서비스를 사용하고 있습니다. 전체 응답은 PUT 요청을 사용하여 XML 파일 (jobId.xml)로 웹 서비스에서 내 서버로 전송됩니다.PHP로 파일이 존재할 때까지 기다리는 방법?


웹 서비스에 요청을 발행하고에서는 jobID을 받고 후에, 나는 는 파일의 PUT 디렉토리에 생성 될 때까지 을 기다릴 수있는 가장 좋은 (가장 효과적인) 방법 일 것입니다 무슨 알고 싶습니다 내 서버?


나는 각 실행 사이의 시간 제한이있는 usleep()와 file_exist의 루프()의 생각입니다.

그러나 나는 더 좋은 방법이 있다고 확신합니다. 청취자와 비슷한 것 ...

파일이 도착하는 데 1 초 미만 걸릴 수 있습니다.

감사합니다.

답변

1
  1. inotify을 사용하면 일부 디렉토리의 파일 생성을 감시 할 수 있습니다.

  2. 또는 PUT 처리기를 수정하여 스크립트에 알릴 수 있습니다. 예를 들어, 당신은이 작성했습니다 파일

+0

어느 것이 가장 효율적입니까? 나는 그것을 광범위하게 사용해야 할 것이다. – benjisail

+0

둘 다 똑같이 효율적이라고 생각합니다. 스크립트는 기다릴 것이고, 파일이 만들어 질 때 깨어날 것입니다. – arnaud576875

1

당신이 PHP를 필요하면 내가 이해하지 못했다을 (차단) 여기에서 읽는 명명 된 파이프를 만들고 파이프 하나를 작성하여 PUT 핸들러를 수정할 수 있습니다 프로세스가 활성 상태로 유지됩니다 (반환 및 중지되지 않음).

그렇지 않은 경우 incrontab을 사용해보십시오.
cronjob과 같지만 미리 구성된 시간에 실행되는 대신 파일 변경에 따라 실행됩니다. 디렉토리를 청취하도록 파일 시스템을 구성하고 파일 시스템에서 파일 작성이 완료되면 incronjob이 원하는 프로그램을 시작합니다.

이것은 유닉스/리눅스 OS 용 솔루션입니다. 당신은 당신의 OS를 언급하지 않았습니다.

+0

linux-only 나는 inotify를 사용하고 있습니다. – arnaud576875

+0

CentOS에 있습니다 – benjisail

+0

예이 경우에 프로세스를 활성화해야합니다. 하지만 나는 incrontab을 모르고 다른 응용 프로그램에 유용 할 수 있습니다! – benjisail

관련 문제