simple_html_domを使用して、URLを集めていますが、echoの部分がなかなか表示されず、
原因がわかるようであれば、教えていただけますでしょうか。
表示までかなり時間がかかるのでなにかおかしな処理をしているのか不安になってきました。
以前は、リアルタイムに近い感じで表示されていたと思うんですが、気づいたらこうなっていました。。。
「URLリストの読込を開始します・・・」もecho "URLリストの読込を開始します・・・";の後ろに、
exit;を入れればすぐ表示されるのですが、このまま使用するとなかなか表示されません。
ご教示いただければ幸いです。
require_once('/home/www/record/simple_html_dom.php'); define("CHAR_SET","UTF-8"); mb_language("Japanese"); $list = array( '/tokyo/', '/kanagawa/', '/saitama/', ); echo "完了まで30分ほどかかります。<br>"; echo "URLリストの読込を開始します・・・"; foreach ($list as $urls) { if(empty($urls)){continue;}//URLが取得できないときはスキップ sleep(1); echo "・"; $url = "http://www.example.jp".$urls."/page_count/"."1"; $header2 = @get_headers($url); if (preg_match('/^HTTP/.*\s+200\s/i', $header2[0])) { $html = file_get_html($url); $search_result = $html->find('div[id=search_result]',0); $result = strstr($search_result->plaintext, "件中", TRUE); $result2 = str_replace("検索結果:","",$result); $result3 = trim($result2); $result4 = ceil($result3 / 10)+1; for($i = 1; $i < $result4; $i++){ $url = "http://www.example.jp".$urls."-/page_count/".$i; echo $url; sleep(1); $html = file_get_html($url); for($j = 0; $j < 10; $j++){ //【】付きじゃない場合はスキップ $building_name = $html->find('span[class=building_name] a',$j); $building_name = $building_name->plaintext; if(!preg_match('/【.*】/',$building_name)){ continue; } //URLリスト作成 $url = $html->find('td[class=txal_center] a',$j); $url = "http://www.example.jp" . $url-> href; echo $url; if($url == "www.example.jp"){ echo "URLが不正か、取得できなかったためスキップします。"; continue; } $fp = fopen('/home/www/record/list.txt', 'a'); if ($fp){ if (flock($fp, LOCK_EX)){ if (fwrite($fp, $url."\n") === FALSE){ print('ファイル書き込みに失敗しました<br>'); } flock($fp, LOCK_UN); }else{ print('ファイルロックに失敗しました<br>'); } } } } } } echo "<br>URLリストの読込を完了しました。<br>";
回答3件
あなたの回答
tips
プレビュー