Проблема в общении с POP3 сервером

dantistus

Новичок
Проблема в общении с POP3 сервером

Мне надо написать скриптик, который будет подключаться к ПОП3 серверу, вытягивать оттуда все сообщения с определенной темой, записывать инфу из них в базу и удалять их.
В принципе все у меня работает как надо, подключается, но вот так вот делать не хочет:

while(!feof($fp))
$str.=fgets($fp,10000);

Скрипт работает 30 секунд и потом умирает. В то время как вот такая конструкция

for($i=0;$i<10;$i++)
$str.=fgets($fp,10000);

работает вполне нормально, как и должна. Подскажите, пожалуйста, как мне правильно втащить инфу с ПОП3 сервера... Заранее благодарен.
 

dantistus

Новичок
Первая читает ответ сервера до тех пор, пока он не закончится. Видимо, ПхП думает, что ответ бесконечный, и читает его, читает....
Ну а вторая конструкция просто читает 10 строк из ответа. Она мне не подходит, поскольку я даже не могу узнать, из скольки строк этот ответ состоит :(

-~{}~ 02.12.05 16:12:

Клозьте топик. Если кому интересно... ПОП3 сервер в ответ на команду RETR или TOP отсылает либо сообщение о неудаче (-ERR ... - одна строка), либо целых три ответа.
1. ПРосто +ОК и количество байт
2. Текст сообщения, хедеры и т.д.
3. Одна строка - '.'.chr(13).chr(10)
То есть данные надо было получать так:

$str=fgets($fp,10000);
if(strstr($str,'+OK')){
$str=fread($fp,100000);
fgets($fp,1000000)
}
else{
echo 'Error: '.$str;
}

-~{}~ 03.12.05 12:23:

Э, сорьки, тут я в прошлый раз неправильную информацию предоставил :) Писать, оказалось, надо так:

while(preg_match('/\.'.chr(13).chr(10).'$/',$t)!=1){
$t.=fread($fp,10000);
}

Т.е. сервер в конце каждого сообщения ставит точку и перевод каретки. Теперь тему точно можете закрывать.
 
Сверху