2011-03-08 3 views
0

Drupal에서 모듈의 일부로 실행되는 스크립트가 있습니다. 이 모듈에서는 cURL 함수를 사용하여 원격 웹 사이트에서 HTML 페이지를 요청한 다음 HTML 컨텐트를 구문 분석하고이를 데이터베이스에 씁니다. 원격 서버에 대한 모든 요청 사이에 지연이 있기 때문에 PHP 스크립트에 sleep()을 추가했습니다.PHP의 Sleep 명령이 0이 아닌 값을 반환합니다.

function get_me_data() 
{ 
    for(15 iterations) 
    { 
    $html = file_get_contents($search_url); 
    //parse html contents 
    $delay = mt_rand($interval1,$interval2); // interval1 = 0 , interval2=30 
    $retval = sleep($delay); 
    } 
} 
  1. 기능 get_me_data()은 크론 작업 (.module 파일에 구현 hook_cron)에 의해 시작된다.
  2. 또한 sleep 명령을 사용하기 전에 스트림을 플러시하려고했습니다. 그것은 그래서 4 ~ 5 번 반복 한 후, sleep() 명령이 리턴 NON ZERO 값을 발생 flush(); ob_flush();fflush(filepointer); ob_implicit_flush(true)

을 사용했다. sleep()이 호출 될 때 스크립트가 다음 반복에서 중단됩니다.

sleep()의 모든 측면이 간과되면 알려주세요. PHP 버전 5.3 & 드루팔 (Drupal) 6

답변

2

문서에 따라 http://php.net/manual/en/function.sleep.php은 0이 아닌 값을 반환 할 수 있습니다.

신호로 호출이 중단 된 경우 sleep()은 0이 아닌 값을 반환합니다. Windows에서이 값은 항상 192입니다 (Windows API 내에서 WAIT_IO_COMPLETION 상수 값). 다른 플랫폼에서 반환 값은 잠자기 시간 (초)입니다.

잠자기의 메모는 중단되지 않으므로 time_sleep_until()을 사용합니다.

+0

입력 해 주셔서 감사합니다. time_sleep_until()도 사용했습니다. 여기서 주목해야 할 것은 drupal localhost 설치에서이 스크립트를 실행할 때 sleep()이나 time_sleep_until()도 실패하지 않는다는 것입니다. – rachel

+0

time_sleep_until()을 사용하여 내 서버에서 PHP 스크립트의 유효성을 검사했습니다. 두 번 반복 한 후에는 함수 호출 바로 전에 debug 문을보고 디버그 문이 없습니다. – rachel

+0

@rachel localhost/server에서 실행중인 OS는 무엇입니까? – Jacob

관련 문제