Fgets останавливается после 130 строк PHP - PullRequest
0 голосов
/ 05 июля 2011
    $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;

}

Так что код отлично работает. За исключением одной проблемы, после примерно 130 строк она останавливается. Он выходит из программы без ошибок. Да, полное сообщение об ошибке включено. Память PHP.ini огромна. Если я отредактирую текстовый файл и вытащу несколько строк, без разницы. Я работал над этим много часов.

1 Ответ

2 голосов
/ 05 июля 2011

Попробуйте сделать это, как они делают в их примере ... с !== false.то есть,

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

Я предполагаю, что ваш контент оценивается как ложный по любой причине.Так получилось, что это 130 строк (перекинуть 130 строк в текстовый файл и посмотреть, не приблизится ли размер файла к 4 КБ).

Кроме того, вы можете исправить форматирование в следующий раз.Нам очень трудно читать и помогать вам.

...