2012-02-06 5 views
0

데이터를 찾고있는 제 3 자 웹 사이트의 몇 페이지를 반복하는 스크립트를 만들었습니다. 하루에 한 번 crontable에서 실행해야합니다. 내가 현재 작성한 방식으로 브라우저에서 해당 기능을 테스트하면 찾고있는 데이터가없는 경우 스크립트가 자바 스크립트로 다시로드되어 다음 페이지로 이동합니다. 그래서 이것은 cron에서 작동하지 않을 것입니다.PHP cron reload woes

function http_get($target, $ref) 
    { 
    return http($target, $ref, $method="GET", $data_array="", EXCL_HEAD); 
    } 

function http($target, $ref, $method, $data_array, $incl_head) 
    { 
    # Initialize PHP/CURL handle 
    $ch = curl_init(); 

    # Prcess data, if presented 
    if(is_array($data_array)) 
     { 
     # Convert data array into a query string (ie animal=dog&sport=baseball) 
     foreach ($data_array as $key => $value) 
      { 
      if(strlen(trim($value))>0) 
       $temp_string[] = $key . "=" . urlencode($value); 
      else 
       $temp_string[] = $key; 
      } 
     $query_string = join('&', $temp_string); 
     } 

    # HEAD method configuration 
    if($method == HEAD) 
     { 
     curl_setopt($ch, CURLOPT_HEADER, TRUE);    // No http head 
     curl_setopt($ch, CURLOPT_NOBODY, TRUE);    // Return body 
     } 
    else 
     { 
     # GET method configuration 
     if($method == GET) 
      { 
      if(isset($query_string)) 
       $target = $target . "?" . $query_string; 
      curl_setopt ($ch, CURLOPT_HTTPGET, TRUE); 
      curl_setopt ($ch, CURLOPT_POST, FALSE); 
      } 
     # POST method configuration 
     if($method == POST) 
      { 
      if(isset($query_string)) 
       curl_setopt ($ch, CURLOPT_POSTFIELDS, $query_string); 
      curl_setopt ($ch, CURLOPT_POST, TRUE); 
      curl_setopt ($ch, CURLOPT_HTTPGET, FALSE); 
      } 
     curl_setopt($ch, CURLOPT_HEADER, $incl_head); // Include head as needed 
     curl_setopt($ch, CURLOPT_NOBODY, FALSE);  // Return body 
     } 

    curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIE_FILE); // Cookie management. 
    curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIE_FILE); 
    curl_setopt($ch, CURLOPT_TIMEOUT, CURL_TIMEOUT); // Timeout 
    curl_setopt($ch, CURLOPT_USERAGENT, WEBBOT_NAME); // Webbot name 
    curl_setopt($ch, CURLOPT_URL, $target);    // Target site 
    curl_setopt($ch, CURLOPT_REFERER, $ref);   // Referer value 
    curl_setopt($ch, CURLOPT_VERBOSE, FALSE);   // Minimize logs 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // No certificate 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);  // Follow redirects 
    curl_setopt($ch, CURLOPT_MAXREDIRS, 4);    // Limit redirections to four 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);  // Return in string 

    $return_array['FILE'] = curl_exec($ch); 
    # Create return array 
    $return_array['STATUS'] = curl_getinfo($ch); 
    $return_array['ERROR'] = curl_error($ch); 

    # Close PHP/CURL handle 
    curl_close($ch); 

    # Return results 
    return $return_array; 
    } 

나는이 문제를 해결 얻을 수있는 모든 방법에 의해 정의 된대로() HTTP_GET : 단순히 기능을 통해 반복의 문제는 내가이 함수를 여러 번 실행 할 수 없다는 것입니다? 감사합니다

답변

0

나는 당신의 문제점이 무엇인지 모르겠습니다 - 루프에 함수 자체가 아니라 함수를 호출하는 코드가 포함될 수 있습니다.

또는 function_exists을 사용하여 함수를 이미 정의했는지 테스트하십시오.

+0

흠, 아마도 내 문제는 내가 내부에서 함수를 인스턴스화하려고하는 것입니까? like function x() {if ($ y = 0) {x();}} ?? –

+0

엿 같은 질문 내 것이었다, 당신은 나를 도왔다 그리고 나는 그것을 작동시켜! 감사 –