2014-01-21 3 views
0

Curl을 통해 다른 서버로 파일을 업로드하려고합니다. 스크립트는 내 자신의 서버에 파일을 업로드합니다. 내 서버가 업로드 및 응답을 처리하고 스크립트는 계속 실행됩니다. Hovever 업로드 된 파일이 크고 (약 500MB 크기) (다른 것처럼 보일 때) 서버가 응답 한 후에도 스크립트가 계속 실행됩니다 (서버 측 스크립트의 출력을 기록하여 AFAIK). 클라이언트는 Xampp을 실행하는 Windows 7 x64 시스템입니다 (여러 버전이 시도되었습니다). html 양식을 통해 동일한 서버 측 스크립트에 동일한 파일을 업로드하면 모든 것이 정상적으로 작동하고 응답을 받게됩니다. 무엇이 문제 일 수 있습니까?PHP curl_exec가 서버 응답에 반응하지 않습니다.

$ch = curl_init($url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, array(
     "MAX_FILE_SIZE" => "2147483648", 
     "action" => "upload", 
     "userfile" => "@".$filepath)); 

    if($uploadresponse = curl_exec($ch)){ 
      echo"Upload done!"; 
     } else { 
     echo"Curl error no. ".curl_errno($ch)." (".curl_error($ch).")"; 
      } 
+0

이제 Windows Server 2012 x64가 설치된 서버 (IIS가 아닌 Xampp)에서 다른 시스템을 사용해 보았습니다. 그것은 효과가 있었다. 그 이유는 업로드가 집에있는 것보다 5 배 더 빠르다는 것입니다. – user2681321

+0

Win 2012 서버와 동일한 Xampp 설치로 가정용 컴퓨터에서 작동하지 않았습니다. 나는 또한 운이없는 안전한 작업 모드에서 시도했다. 방화벽 바이러스 백신 등은 테스트가 시작된 이래로 사용이 중지되었습니다. 나는 새로운 Windows 7 설치로 다른 컴퓨터에서 시도 할 것이다. 문제가 라우터 또는 무언가 일 수 있기 때문에 그것이 작동하지 않으면 집에서 Windows 서버 2012 설치에서 시도 할 것입니다. – user2681321

+0

Windows 서버에서도 작동하지 않았습니다. 하지만 내 이웃 WLAN에 연결 한 후에 작동했습니다. 이제 라우터 설정을 살펴 보겠습니다. – user2681321

답변

0

curl에는 성공 여부에 관계없이 실행을 허용하는 기본 시간 제한이 있습니다.

curl_setopt($ch, CURLOPT_TIMEOUT, 5 * 60); // 5 minutes 
+0

방금 ​​시도했지만 서버가 응답 한 후에도 스크립트가 계속 실행됩니다. – user2681321

0

단순히 0에 제한 시간을 설정하여 CURLOPT_TIMEOUT에 시간 제한을 설정하지 할 수 있습니다 : 당신은 (나는 큰 파일을 업로드하는 동안 시간이 초과지고 의심하고 같은)이 컬 옵션을 사용하여이 시간을 연장 할 수 있습니다 .

관련 문제