이 확장 프로그램은 http 레벨에서 백그라운드 작업을 실행하므로 스크립트의 최대 실행 시간을 관리해야합니다.이 확장 프로그램이이를 처리하지 못합니다. 명령 줄 실행의 경우 최대 실행 시간이 적용되지 않습니다. 긴 과정에 대한
보통
http://php.net/manual/en/info.configuration.php#ini.max-execution-time
에서, tiemout을 해제하기보다는, 내가 사이클이 같은 그것을 증가 :
while ($i <= 10) {
my_complex_update_query();
echo "Timeout is : " . ini_get('max_execution_time') . " sec.<br>";
set_time_limit(ini_get('max_execution_time') + 1);
echo "NEW Timeout is : " . ini_get('max_execution_time') . " sec.<br>";
$i++;
}
시간 제한이 매 사이클에서 1 초를 추가이 증가, 분명히 10 사이클마다 1 초를 추가하는 것과 같이 필요에 맞게 조정해야합니다. 이런 식으로 스크립트가 어떤 이유로 든 막히면 어쨌든 타임 아웃되어 메모리에 멈추지 않습니다.
외부 호출 (데이터베이스 쿼리, 시스템 호출 exec ...)이 스크립트 실행 시간에 계산되지 않는다고 생각하십시오. 스크립트가 5 초 실행되면 실행을 위해 2 분이 걸리는 쿼리를 수행합니다. 스크립트가 다음 명령으로 진행될 때 실행 시간은 여전히 5 초가 아니라 2 분 + 5 초가됩니다.
이전에는 _runactions_을 사용하지 않았지만 대화를 돕기 위해 붙여 넣은 링크의 네 번째 유스 케이스 인 ERunActions :: runBackground()를 사용한다고 가정 할 수 있습니까? 또한 2500 레코드가 6000 개 중 처음 2500 개가 업데이트 되었습니까? – Jerome
예 처음 2500 레코드 –
이것은 아마도 PHP 스크립트의 시간 초과와 관련이 있습니다. http://php.net/manual/en/function.set-time-limit.php – topher