2012-02-06 50 views
0

我做了一個腳本,遍歷第三方網站尋找數據的幾頁,我需要在crontable上每天運行一次。我目前編寫的方式是在瀏覽器上測試它的功能,如果找不到所需的數據,腳本會使用javascript重新加載以轉到下一頁。所以這在cron中不起作用。與簡單的通過功能循環的問題是,我不能運行這個功能多次:HTTP_GET()由PHP cron重新加載困境

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; 
    } 

任何方式,我可以解決這個定義?謝謝

回答

0

我不知道你的問題是什麼 - 你可以讓循環包含調用函數的代碼,而不是函數本身。

或者,使用function_exists來測試您是否已經定義了這些功能。

+0

嗯,也許我的問題是我想重新實例化一個函數從內部本身? like function x(){if($ y = 0){x();}} ?? – 2012-02-06 19:26:30

+0

因爲我的問題很糟糕,你幫助我,我得到它的工作!謝謝 – 2012-02-06 20:39:18