2017-03-07 51 views
-1

ファイル内の1000個のリンクを読み込んで出力を生成するPHPスクリプトを自動化する最も簡単な方法は何ですか?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)を使用して制限を完全に削除できます。

関連する問題