2016-05-22 9 views
-1

URLをチェックしてURLが存在するかどうかを調べることを含む特定のフィルタ条件を満たすと、データベースをループして配列にデータを追加しようとしています。PHP while loop gettng stuck

私は出口でループを壊すとエコー結果が表​​示されるので、ループが最初のラウンドを実行しているのが分かります。しかし、もし私がしなければ、何もエコーして無限に何もしません!!

コード:

$gp=0; 
include('connnew.php'); 
$getpages=$clientdb->query("SELECT * FROM clientdata ORDER BY Date DESC") or die("Pages Error : ".$clientdb->error); 
while($subdinf=$getpages->fetch_assoc()){ 
$gp++; 
echo "<div style='position:absolute;top:150px;right:60px;'>$gp</div>"; 
$subdinf['propheading']=$subdinf['propheading']."-".$subdinf['Id']; 
$proph=$subdinf['propheading']; 
$page=trim(str_replace($splchrs,'-',$proph)); 
$page=trim(str_replace("&","and",$page)); 
$page=trim(str_replace(array("---","--"),'-',$page)); 

if(substr($page,0,32)!="Want-to-Buy-any-kind-of-property" && substr($page,0,40)!="For-sale-1-BHK-2BHK-and-other-properties" && substr($page,0,38)!="Wanted-Apartments-and-other-properties"){ 
$html5="http://www.landshoppe.com/$page"; 

$file_headers = get_headers($html5); 

      if($file_headers[0] == 'HTTP/1.1 404 Not Found') { 
       $exists = false; 
       echo "<h3>URL ".$html5." Does not exist !</h3>"; 
       } 
       else { 

       $exists = true; 
        if(!in_array($html5,$link)){ 
         $link[]=$html5; 
        echo $html5."<br>"; 

         } 
        } 
      } 
//echo $gp;exit; 
} 
echo "Total Pages : $gp<br><br>";exit; 

誰かが私は、私はいくつかの出力を無期限に待機していながら、何が起こっているのかを理解するのを助けることができますか?

+0

エラー抑制のために '@'を使用すると、有用なメッセージは表示されません。まずそれを削除し、表示されるエラーメッセージを元に戻してください。 – vascowhite

+0

「意図せぬ見落としのメリット、迅速な投票」、問題の診断に非常に関連しているので、それはまた非常に悪い習慣であり、私はそれを見るたびにdownvoteします。 – vascowhite

答えて

1
$getpages->fetch_assoc() 

は、foreachループ内で実行する必要がある配列を提供します。そしてその$ gpは何ですか?それは、無限のwhileループでそれ自体をインクリメントしているだけです。あなたにできることはこれは、アレイ数がそれの上にあるときにループを停止することが保証さ

while($subd=$getpages->fetch_assoc()){ 

foreach ($subd as $subdinf){ 
    //put rest of the code inside this 
} } 

です。

あなたは、このリンクおよび下記の例を確認してくださいループ

ob_start(); 
// Your entire function here 
$output = ob_get_clean(); 

echo $output; 

の状態を表示するには、出力バッファリングを使用することができます。あなたが理解します http://php.net/manual/en/ref.outcontrol.php

+0

Amitさん、ありがとうございました。スクリプトはどういうわけか自分自身で作業を始めました!私は十分に長く待たなければならなかったと思います!唯一のことは、プロセスが完了するのを待っている間にプロセスの状態を知る方法があれば良いでしょう! – user3526204