2011-05-16 6 views
2

제한 시간에 도달하면 오류를 반환하는 대신 무언가를하는 "콜백 함수"를 설정할 수 있습니까?set_time_limit 콜백?

+1

가 제목에 태그를 작성하지 마십시오. –

+0

@Tomalak 나는 그들을 영원히 편집하고있다. – alex

+0

@alex : 저도 요. 점점 더 악화되고있는 것 같습니다 : ( –

답변

2

제한 시간 (set_time_limit(0))을 제거한 다음 PHP 스크립트가 실행을 시작한 시간을 추적하고 현재 시간과 비교할 수 있습니다.

<?php 

$startTime = microtime(); 

// Whatever you need to do... 

// Place this where it needs to be in the context of your application. 
if (microtime() - $startTime > 15000) { 
    // Time's up! 
} 
+0

맞아요, 그것에 대해 ... 나는 그것을 시도 할 것입니다. – Francesco

0

저는 그렇게 생각하지 않습니다 ... 그런 종류의 함수가 처음부터 시작하는 지점을 무효로합니다 ... 만약 당신이 그런 것을하고 싶다면 0 (시간 제한 없음)으로 설정하고 추적하십시오. 시간의 다른 방법과 무언가 X 시간 후에.

0

다른 사람들은 그렇지 않다. 외부 요인으로 인해 스크립트가 시간 초과 된 경우 (단일 함수 호출에서 돌아 오지 않는 것처럼) pcntl_alarmpcntl_signal 만 사용할 수 있습니다. 하지만 이들이 sapi의 다른 CLI에서 사용될 수있을 지 모르겠다.

0

이 하나를 시도 할 수 있습니다 http://www.php.net/register_shutdown_function

function shutdown() 
{ 
    // This is our shutdown function, in 
    // here we can do any last operations 
    // before the script is complete. 

    echo 'Script executed with success', PHP_EOL; 
} 

register_shutdown_function('shutdown');