Нужно пояснение
Код:
<?
class MailCheck {
var $server;
var $user;
var $pass;
var $port;
var $socket;
var $array;
function send_and_receive($string) {
$date=date('d'.'m'.'Y');
$time=date('H'.'i'.'s');
fputs($this->socket,"$string\r\n");
$str=fgets($this->socket, 512);
if($string=="LIST") {
$this->array=explode(" ",$str);
}
$log=fopen("logs/$date-$time.txt","a+");
fputs($log,$str."\r\n");
}
function dump_msg($msg_id) {
fputs($this->socket,"RETR $msg_id\r\n");
$file=fopen("logs/mail.txt","w+");
$str=fgets($this->socket,1024); интересует работа двух этих строк
fputs($file,$str);
}
function main() {
$this->send_and_receive("USER $this->user");
$this->send_and_receive("PASS $this->pass");
$this->send_and_receive("STAT");
$this->send_and_receive("LIST");
$this->dump_msg(1);
}
}
class MailCheck {
var $server;
var $user;
var $pass;
var $port;
var $socket;
var $array;
function send_and_receive($string) {
$date=date('d'.'m'.'Y');
$time=date('H'.'i'.'s');
fputs($this->socket,"$string\r\n");
$str=fgets($this->socket, 512);
if($string=="LIST") {
$this->array=explode(" ",$str);
}
$log=fopen("logs/$date-$time.txt","a+");
fputs($log,$str."\r\n");
}
function dump_msg($msg_id) {
fputs($this->socket,"RETR $msg_id\r\n");
$file=fopen("logs/mail.txt","w+");
$str=fgets($this->socket,1024); интересует работа двух этих строк
fputs($file,$str);
}
function main() {
$this->send_and_receive("USER $this->user");
$this->send_and_receive("PASS $this->pass");
$this->send_and_receive("STAT");
$this->send_and_receive("LIST");
$this->dump_msg(1);
}
}
Так вот. Обратите внимание на те 2 строки. Если оставить так, то в выходном файле mail.txt будет одна строка. Я прекрасно понимаю, что информация считывается неполностью. Но если в данную функцию вставить следующую конструкцию:
Код:
while(!feof($this->socket)) {
$str=fgets($this->socket,512);
fputs($file,$str);
}
$str=fgets($this->socket,512);
fputs($file,$str);
}
то скрипт повисает, но всю информацию записывает. В файле mail.txt появляется вся инфа о письме. Подозреваю, что ошибка где-то в while(!feof($this->socket))
А где инициализируется переменная $socket ??
$obj=new имя_класса;
$obj->socket=fsockopen($obj->server=$server,$obj->port=110);
[color="red"]Не нужно поднимать темы[/color]
[color="red"]Ещё один выпад и я вынужден буду закрыть тему. Отвечать не кто не обязан, это дело добровольное[/color]