2014-10-29 3 views
1

PHP를 통해 Google 드라이브에 로컬 파일을 업로드하려고합니다. 작은 파일 (< 5MB)을 업로드하면 모든 것이 작동합니다. 큰 파일을 업로드하려면 "치명적인 오류 : 최대 실행 시간 30 초 초과"가 표시됩니다. 내 php.ini에서 max_execution_time을 매우 높은 값으로 설정할 수 있지만 나쁜 해결책 인 것 같습니다. "set_time_limit (seconds);"를 사용하면 더 많은 파일을 동시에 업로드 할 수 없습니다 (이유를 모르겠습니다).API를 사용하여 대용량 파일을 Google 드라이브에 업로드하는 중 PHP 실행 시간 초과

제 질문은 내 php.ini를 나쁜 실행 시간으로 변경하지 않고 큰 파일을 업로드하는 방법입니다. 어떻게 PHP로 해결할 수 있을까요? CURL은 서약을 지원할 수 없기 때문에 간단한 CURL cli 명령을 사용하고 싶습니다.하지만 Google 드라이브에서는 작동하지 않습니다.

+0

중복 가능성 [PHP에서 500메가바이트 이상 큰 파일을 업로드하는 방법] (http://stackoverflow.com/questions/16102809/how- to-upload-large-files-above-500mb-in-php) –

+0

난 그냥 구글 드라이브 PHP API를 사용하고 싶다. 그것은 같은 문제가 아닙니다. – Lotus

답변

0

아주 큰 파일을 업로드하는 간단한 PHP 코드를 사용하는 것은 좋지 않습니다.

AJAX 방식을 사용하기 때문에 큰 파일을 업로드하려면 자바 스크립트를 사용해야합니다. 또한 진행률 표시 줄을 표시 할 수 있습니다.

약간의 연구를했습니다. http://designscrazed.org/html5-jquery-file-upload-scripts/

또는 jQuery를 사용하지 다른 스크립트 (그것이 좋은 일이라면 그렇게하지) : http://igstan.ro/posts/2009-01-11-ajax-file-upload-with-pure-javascript.html

행운 여기에 jQuery를 사용하여 멋진 스크립트입니다!

+0

그건 내가 원하는 바가 아니야. Google 드라이브에 파일을 업로드하고 싶습니다. 따라서 Google API를 사용해야합니다. 스크립트는 브라우저가없는 서버에서도 실행됩니다. 그게 내가 자바 스크립트를 사용할 수없는 이유이다. (js api에는 오프라인 액세스가 없다.) – Lotus

2

max_execution_timeset_time_limit으로 설정하는 것이 올바른 해결책입니다. 스크립트가 파일을 업로드하는 데 30 초 이상 걸리면 이 30 초 이상 실행됩니다. 당신은 당신이 무엇을 의미하는지

set_time_limit(600); //File upload should not take longer than 10 minutes 
do_your_file_upload(); 
set_time_limit(30); //Change it back to 30 seconds for further processing 

I can't upload more files simultaneously

를 지정할 수 있습니까?

다른 스크립트가 실행되는 동안 PHP 스크립트에 연결할 수없는 경우는 종종 PHP session management입니다. session_start으로 세션을 시작하면 PHP는 (생성 및) 세션 파일을 열고 은 쓰기 위해 잠금합니다.. 스크립트는 session_write_close을 호출하거나 스크립트 실행이 끝날 때까지 잠겨 있습니다. 동시에 두 개 이상의 세션을하려면, 당신은 session_write_close 전화를해야 :

session_start(); 
//do stuff 
session_write_close(); 

set_time_limit(600); //File upload schould not take longer than 10 minutes 
do_your_file_upload(); 
set_time_limit(30); //Change it back to 30 seconds for further processing 

session_start(); 
//do more stuff 
session_write_close(); 
+0

두 개의 동일한 스크립트 a.php와 b.php가 동시에 실행되었습니다. 둘 다 세션을 시작하고 둘 다 동일한 파일을 다른 이름으로 업로드합니다. 둘 다 실패했다. – Lotus

+0

오류 메시지가 있습니까? 그렇지 않다면 검토 할 코드를 사용하십시오. – BreyndotEchse