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);
}
私はゼロに設定して修正しました!ありがとうございました :) – 2kan