2012-01-01 11 views
1

Webクローラーを作成してウェブサイトから情報を取得しましたが、それに要する時間は約6時間です情報を取得するために)しかし、私の機能を介してループの約30~40分後、それは動作を停止し、私は欲しい情報のほんの一部を持っています。 の場合、ページはロードされているように見え、画面上のどこに出力されますが、停止するとページが読み込まれなくなり、入力が停止します。PHPスクリプトは6時間かかると思われますが、30分後に終了します

30分ごとに再度起動する必要がないように、ページの読み込みを維持できますか?

EDIT:あなたのスクリプトの先頭に

set_time_limit(0); 

を追加ここに私のコードだ

function scrape_ingredients($recipe_url, $recipe_title, $recipe_number, $this_count) { 
    $page = file_get_contents($recipe_url); 

    $edited = str_replace("<h2 class=\"ingredients\">", "<h2 class=\"ingredients\"><h2>", $page); 

    $split = explode("<h2 class=\"ingredients\">", $edited); 
    preg_match("/<div[^>]*class=\"module-content\">(.*?)<\\/div>/si", $split[1], $ingredients); 

    $ingred = str_replace("<ul>", "", $ingredients[1]); 
    $ingred = str_replace("</ul>", "", $ingred); 
    $ingred = str_replace("<li>", "", $ingred); 
    $ingred = str_replace("</li>", ", ", $ingred); 

    echo $ingred; 
    mysql_query("INSERT INTO food_tags (title, link, ingredients) VALUES ('$recipe_title', '$recipe_url', '$ingred')"); 

    echo "<br><br>Recipes indexed: $recipe_number<hr><br><br>"; 

} 

$get_urls = mysql_query("SELECT * FROM food_recipes WHERE id>3091"); 
while($row = mysql_fetch_array($get_urls)) { 
    $count++; 
    $thiscount++; 
    scrape_ingredients($row['link'], $row['title'], $count, $thiscount); 

    sleep(1); 
} 

答えて

6

php.iniのset_time_limitオプションの値は何ですか?スクリプトを無限に動作させるためには0に設定する必要があります

+0

私はゼロに設定して修正しました!ありがとうございました :) – 2kan

関連する問題