2011-07-05 3 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 후 중지합니다. 1 개의 문제점을 제외하고, 대략 130의 선 후에, 그것은 멈춘다. 오류없이 프로그램을 종료합니다. 예 전체 오류보고가 켜져 있습니다. PHP.ini 메모리는 엄청납니다. txt 파일을 편집하고 일부 줄을 제거하면 차이가 없습니다. 나는 여러 시간 동안이 일을 해왔다.

+0

preg_replace는 잘못된 문자를 제거하는 것이고 substr은 약간의 오류가있을 경우 (www가 아닌 ​​www) 시작 URL을 제거하는 것입니다. – Joe

답변

2

their example ... !== false과 같이 수행하십시오. 즉

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

귀하의 콘텐츠가 어떤 이유에서든 false로 평가되고 있습니다. 그것은 단지 130 줄 (텍스트 파일에 130 줄을 던져 파일 크기가 4KB에 가까워 졌는지 확인하는 것)입니다.

또한 다음 번에 서식을 수정해야 할 수도 있습니다. 우리가 당신을 읽고 도와주기가 매우 어렵습니다.

+0

나는 false === false를 사용했습니다. 4096은 1024로 바뀌었고, 9999는 사라졌습니다. 정지합니다. – Joe

+0

! == false였습니다. 나는 단지 ===를 사용 했음에 틀림 없다. 고맙습니다!!! – Joe