2011-07-05 84 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