2016-09-20 1 views
1

거대한 파일을 가져 와서 처리하는 cronjob이 있습니다. 가져 오기 프로세스에는 많은 시간이 걸리지 만 600 초 후에 스크립트를 실행중인 서버에서 cronjob (시간 초과)을 중단합니다. 서버 기술자와 이야기 한 후 스크립트를 가져 오는 과정에서 번 출력을 10 분 후에 중단해야한다고 말했습니다.PHP의 다른 프로세스에서 5 분마다 출력 할 수 있습니까?

내 질문은 이제 다음과 같습니다. 파일을 가져 오는 import() 함수가 있다고 가정 해 봅니다.이 함수는 실행하는 데 약 20 분이 걸립니다. 거기에 어떤 방법을 동시에 echo 출력마다 예를 들어 5 분 있나요? 또는 PHP 코드가 항상 순차적으로 처리된다는 사실 때문에 이것이 가능하지 않습니까?

+0

. 샘플 코드보기 – RiggsFolly

+1

최대 실행 시간을 단순히 늘릴 수 없습니까? (예 : ini_set ('max_execution_time', 3000)) – Alex

답변

1

반복적 인 프로세스 인 경우 변수 $last_echotime()의 값으로 설정할 수 있습니다. 그런 다음 각 반복 검사에서 time() - $last_echo > 300인지 확인하십시오.

예 :

파일을 가져 HWO에 따라
$last_echo = time(); 
while (true) { 
    //Do process 
    if (time() - $last_echo > 300) { 
    echo '.'; 
    } 
} 
+0

cron은 모든 출력을 콘솔로 보내는 전자 메일을 보내고 로그 파일로 출력하면 작동하겠습니까? – RiggsFolly

+0

로그로 출력 할 수는 있지만 기본적으로 사용자에게 이메일로 전송되지는 않습니다. 'max_execution_time'을 올려서'3600 '이라고 말할 수도 있습니다. 고칠 수도 있습니다. –

+0

귀하의 의견을 주셔서 감사합니다,하지만 난 다른 수정 방법을 시도했지만 그들은 아무것도 변경하지 않는 것 같습니다. @RiggsFolly 분명히 출력이 로그 파일이 아닌 직접 있어야 할 필요는 없습니다. – phpheini

관련 문제