2009-12-29 7 views
2

MySQL 데이터베이스 백업을 .sql 파일로 실행하고 TAR/GZip으로 이메일을 보내도록 PHP 스크립트가 있습니다. 데이터베이스 중 하나는 웹 서버를 제공하는 공급자가 아닌 다른 공급자가 호스팅합니다. 모든 것이 Linux/Unix에서 호스팅됩니다. 내가이 명령을 실행하면 : (. 참고로, 나는 또한 시스템(), 경유() 및 shell_exec()와 함께이 시도했습니다)PHP/passthru/mysqldump가 타임 아웃하는 것 같습니다.

$results = exec("mysqldump -h $dbhost -u $dbuser -p$dbpass $dbname > $backupfile", $output, $retval); 

내 브라우저에 15 ~ 20 초 동안 페이지를로드 처리하지 않고 멈 춥니 다. FTP 클라이언트로 서버를 살펴보면 결과 파일이 몇 초 후에 표시되고 파일 크기가 데이터베이스가 백업 될 때까지 생성됩니다. 따라서 백업 파일이 생성되지만 스크립트가 작동을 멈추기 전에 파일을 압축하고 전송할 수 있습니다.

PHP에서 max_execution_time 변수를 확인했으며 30 초 (페이지가 작동하지 않는 것보다 오래 걸림)로 설정되어 set_time_limit 값을 최대 200 초로 설정했습니다.

누구나 무슨 일이 일어나고 있는지 알 수 있습니까?

+0

다른 옵션이 있습니까? 예 : pdo, fputcsv 및 zlib.inflate-filter? – VolkerK

답변

1

공유 호스팅을 사용하고 있습니까? 아니면 자신의 서버입니까? 이전 호스팅 제공 업체가 최대 실행 시간을 15-20 초로 설정하고 재정의 할 수 없도록 설정 한 경우 (1 & 1 및이 유형의 스크립트에서이 문제가 있음).

+0

공유 호스트에 있지만 기본 최대 실행 시간이 스크립트가 실패하는 것보다 많은 시간이 설정되어있는 것처럼 보입니다. – Kevin

1

phpinfo() 호출로 실행 시간 관련 매개 변수를 다시 확인하십시오 ... 아마도 파올로가 쓴 내용에 관한 것입니다.

+0

의견을 보내 주셔서 감사합니다. phpinfo()를 확인하고 최대 실행 시간이 스크립트 실행보다 긴 30 초로 설정되어 있는지 확인했습니다. 요청 된 페이지가 실패하는 데 걸리는 시간은 30 초 미만입니다. 일반적으로 약 15-20. – Kevin

1

일정 기간 비활성 상태를 포기한 (역) 프록시 일 수도 있습니다. 긴 샷은 그것의 부여 어쨌든 ....

// test A 
$start = time(); 
sleep(20); 
$stop = time(); 
echo $start, ' ', $stop; 

// test B 
for($i=0; $i<20; $i++) { 
    sleep(1); 
    echo time(), "\n"; 
} 

밖으로 첫 번째 시간, 두 번째는 내가 그 증거 만 증거가없는 전화 거라고하지 않는 경우

을 시도합니다.

+0

당신의 아이디어에 감사드립니다. 나는 두 가지 테스트를 모두 시도했지만 그들은 모두 장애없이 일했다. – Kevin

0
  1. 수동 덤프를 수행하고 손상된 부분을 대비하여 비교하십시오. 포인트 mysqldump를 중지하는이
  2. 이 mysqldump를 같이 mysqldump는 출력을 로그 고려 충돌/당신을 말할 수 ... 2> /tmp/dump.log
  3. 해당 컨트롤이 덤프 전에 PHP로 반환되도록 mysqldump를가 분리 실행 고려 보조 노트에

을 완료, 아마도 공급자가 php.ini의 설정을 넘어 다른 리소스 제한을 설정 한 거의 항상 -Q

1

을 mysqldump에하는 것이 좋습니다. 명령을 사용할 수있는 경우

<?php passthru('ulimit -a'); 

을 시도 하면은 자원의 목록과 한계, 예를 인쇄한다

core file size   (blocks, -c) 0 
data seg size   (kbytes, -d) unlimited 
scheduling priority    (-e) 0 
file size    (blocks, -f) unlimited 
pending signals     (-i) 4095 
max locked memory  (kbytes, -l) 64 
max memory size   (kbytes, -m) unlimited 
open files      (-n) 1024 
pipe size   (512 bytes, -p) 8 
POSIX message queues  (bytes, -q) 819200 
real-time priority    (-r) 0 
stack size    (kbytes, -s) 8192 
cpu time    (seconds, -t) unlimited 
max user processes    (-u) 4095 
virtual memory   (kbytes, -v) unlimited 
file locks      (-x) unlimited 

공유 서버의 설정보다 더 제한적인 설정이있을 수 있습니다.

관련 문제