2011-07-05 56 views
0
$done=0; 
    $filename = "raw_urls.txt"; 
    if(! ($fhandle = fopen($filename, "r"))) 
{ echo "File failed to open"; 
    Exit; } 
    // 
    // main loop reads sitemap url list 
    // 
    while($url_full_raw = fgets($fhandle,4096)) 
    { 
    print (mysql_error()); 

$url_full= preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $url_full_raw); 
if(strlen($url_full) > 3) 
{ 
    $url_stat++; 
    // Echo ' tp1 Url from sitemap:',$url_stat,' - ' ,$url_full,'<br>'; 
    $end_st = strlen($url_full)-29; 
    $s_url= substr($url_full,29,$end_st); 
    //Echo 'short:',$s_url,'<br>'; 
    $url_full_raw= ''; 
} 
else{ 
    $done++; 
    Echo '----------- short string ---------------'; 
} 
// 
//  Check for url 
// 
$res1=sql("SELECT * FROM `spy3` WHERE `Landingpage` LIKE '%$s_url%' LIMIT 0, 30 ",$o); 
if($row=mysql_fetch_array($res1)) 
{ 
    $lp=$row[6]; 
    $found++; 
    // Echo '------->Url from sitemap:',$url_full,'<br>'; 
} 
else{ 
    Echo 'Not Found:-> ',$s_url,'<br>'; 
    $nfound++; 
} 
sql("insert into sitemap (url, stat_url,nf, s_recno) 
values (
'$url_full', 
'$lp', 
'$nfound', 
'$url_stat' 
)", $o); 
print (mysql_error()); 
$found=0; 
$nfound=0; 

}FGETS停止後130線PHP

因此,代碼的偉大工程。除了一個問題,約130行後,它停止。它退出程序時沒有錯誤。是完整的錯誤報告。 PHP.ini內存很大。 如果我編輯txt文件並取出一些行,沒有區別。我一直在爲此工作數小時。

+0

preg_replace是爲了去掉任何不好的字符,substr會在出現輕微錯誤(www vs non www)的情況下取出開始URL。 – Joe

回答

2

請試着像their example ...一樣做!== false。即,

while(($url_full_raw = fgets($fhandle,4096))!==false) { 

我猜你的內容被評估爲false無論出於何種原因。恰好在130行(將130行放入文本文件中,看看文件大小是否接近4 KB)。

此外,您可能需要下次修復格式。使我們很難閱讀和幫助你。

+0

我使用了包含=== false的false。 4096已被更改爲1024,遺漏了,9999。仍停止。 – Joe

+0

這是!== false。我必須只使用===。謝謝!!! – Joe