2017-03-07 126 views
-1

什麼是自動執行php腳本以讀取文件中的1000個鏈接並生成輸出的最簡單方法?使用javasctipt自動執行php腳本

我有這個PHP代碼來閱讀鏈接,無論他們是否有效。目前我每次都在urls.txt文件中複製/粘貼max 500 links併產生結果,我的服務器不能處理更多。我需要檢查15-20K links

<?php 
$handle = fopen("urls.txt", "r"); 
if ($handle) { 
    while (($line = fgets($handle)) !== false) { 
     $link = trim($line); 
     $isValid = CheckLinks($link); 
     if($isValid){ 
      echo "$link". "<br>"; 

     }else{ 
      echo ""; 
     } 
    } 

    fclose($handle); 
} else { 
    echo "Could not read urls.txt"; 
} 

function CheckLinks($link) { 
    $url = $link; 
    $extpage = file_get_contents($url); 
    $notValid = strpos($extpage,"This page doesn't exists."); 

    return !$notValid; 
} 
?> 

應該添加什麼來檢查這個鏈接的數量?

編輯:我想它讀取400-500行,並給出輸出,然後下500行等。

我是新手,所以請原諒我,如果我問得太多。

+0

http://php.net/manual/en/function.sleep.php –

+0

這對我來說不起作用,因爲它會延遲整個腳本,當它啓動時會再次加載所有會導致時間到。我希望它讀取500行,並給出輸出,然後500行。 – Ali

+0

正如我在回答中所說的那樣,用一個計數器來表示;如果時間限制是一個問題,然後http://php.net/manual/en/function.set-time-limit.php –

回答

0

你可以在每次檢查後,把腳本sleep

while (($line = fgets($handle)) !== false) { 
    $link = trim($line); 
    $isValid = CheckLinks($link); 
    if($isValid){ 
     echo "$link<br>"; 
    } else { 
     echo ""; 
    } 
    sleep(1); // add this line 
} 

如果1個每次迭代第二睡眠實在是太多了,你可以使用你增加了您要檢查的人數計數器執行,然後休眠幾秒鐘並重置計數器。

最後,如果時間限制有問題,您可以使用set_time_limit(0)完全刪除限制。