Re: Re: Ошибка при попытке считать список аккаунтов в массив PHP

От: Maxim Polyakov <CGatePro_at_mx_ru>
Дата: Wed 09 Nov 2005 - 11:56:05 MSK

>>>> Использую CLI.php.

Спасибо большое. Нормальное решение. Все работает.

MVS> Посмотрел еще раз, поставил пару экспериментов и вот :

MVS>         function _parseResponse() {
MVS>             $line = fgets($this->sp, (1024*10));
MVS>             $line = stripslashes($line);
MVS>             if($this->debug)
MVS>                 echo "$line\n";
MVS>             if(preg_match("/^(\d+)\s(.*)$/",$line,$matches)) {
MVS>                 $this->errCode = $matches[1];
MVS>                 if($matches[1] == 201) {
MVS>                     // inline response
MVS>                     $this->inlineResponse = $matches[2];
MVS>                     $this->errMsg = "OK";
MVS>                 } else {
MVS>                     // error
MVS>                     $this->errMsg = rtrim($matches[2]);
MVS>                 }
MVS>                 $this->isSuccess();
MVS>             } else {
MVS>                 $this->_setStrangeError($line,$code);
MVS>             }
MVS>         }

MVS> Вся проблемма вот в этой строчке
MVS>     $line = fgets($this->sp, (1024*10));

MVS> Т.е. из сокета читается только 10 килобайт данных, а список может быть
MVS> ОООЧЧЧЕЕЕЕННННЬЬЬЬ большим и естественно он не влазит в эти 10
MVS> килобайт, у меня ошибка появилась когда вместо 10 я поставил 1 (нет у
MVS> меня такого количества ящиков что бы проверить на кошках). Если
MVS> считать данных меньше чем есть, то получается ошибка парности, о чем MVS> он и говорит,
>>>CGPro output format error at '=':
MVS> у меня подобная ошибка была только из за задержек при чтении
MVS> из сокета, поэтому сразу и предложил тайм аут увеличить. Думаю если
MVS> поставить вместо 10 большее число все пройдет корректно, не думаю что
MVS> это правильное решение, но как "затычка" должно работать.

>>>> Выполняется следующая конструкция:
>>>> $AccountList = $cli->ListAccounts($domain);

>>>> Если в домене не много аккаунтов, то функция выполняется
>>>> благополучно. Если же аккаунтов много, то php выводит следующую
>>>> ошибку:

>>>> CGPro output format error at '=':

>>>> А логах CGP пишет следующее:

>>>> 15:25:54.40 3 PWD-10341([127.0.0.1]) read failed. Error
>>>> Code=connection closed by peer

>>>> Эта ошибка возникает, как я уже сказал, если в домене много аккаунтов.
>>>> Такой домен у меня один. А может эта ошибка возникает не из-за того,
>>>> что в нем много аккаунтов, а потому что он является главным
>>>> доменом?

>>>> Чтобы это могло значить и как с этим бороться?
Получено Wed Nov 09 08:56:07 2005

Этот архив был сгенерирован hypermail 2.1.8 : Tue 21 Feb 2006 - 03:17:34 MSK