2009-03-31 5 views
1

나는 S3에 파일을 업로드하기 위해 작성한 일부 PHP 코드로 다양한 결과를 얻고 EC2 인스턴스를 호출하여 업로드 된 파일에 대한 작업을 수행합니다. 아마존에 파일을 업로드하기 위해 PHP에서 이벤트를 시퀀싱하는 방법 S3

1) S3 클래스를 사용

$result = s3 -> putObjectFile($uploadDIR, $bucket, $name, S3::ACL) 

2) 체크 $ 결과 파일을 넣어

if($result == "1") { 
//file made it to s3 

3) 컬은 EC2에게 전화를 걸 때 사용 - 여기

내가 일을 할 순서입니다 인스턴스에서 파일에 대한 작업 수행 및 수행

작은 vi 파일을 업로드 할 때이 파일을 비디오 파일과 함께 사용하고 있습니다. (예 : 3 메가 바이트) 괜찮아요 작동하지만 큰 비디오 (예 : 80 메가 바이트) 코드가 나던 지난 1 단계를 얻을 것 같다. 파일은 s3으로 이동하지만 괜찮아요 내 추측은 잠시 후 PHP는 볼 때까지 기다리는 것을 포기합니다 result == 1이므로 나머지 코드는 실행하지 않습니다.

이렇게 처리하는 가장 좋은 방법은 무엇입니까? 파일이 S3에 업로드되었다는 것을 어떻게 감지하고 코드가있을 때 실행합니까?

답변

4

대용량 파일의 경우 업로드하는 데 걸리는 시간은 스크립트의 max_execution_time보다 클 수 있습니다.

set_time_limit() 함수를 사용할 수는 있지만 사용자 피드백 (브라우저 출력)없이 스크립트가 "정지"하기 때문에 웹 페이지에는 좋지 않습니다.

이것은 아마 더 좋은 것 :

  1. 사용하고 set_time_limit() 그래서 스크립트가 죽지 않습니다.
  2. 파일 이름을 임시 위치 (DB, 세션 등)에 저장하고 고유 ID를 얻습니다.
  3. 파일의 상태에 대해 두 번째 스크립트를 쿼리하도록 (반복적으로) 일부 AJAX 코드가있는 페이지를 출력합니다 (FINISHED, FAILED, UNDEFINED?)
  4. 원본 스크립트에서 작업이 완료 될 때까지 기다렸다가 결과로 DB를 업데이트하십시오.