Здравствуйте CommuniGate,
Wednesday, November 9, 2005, 9:20:02 AM, you wrote:
>>> Здравствуйте.
>>> Использую CLI.php.
MVS>> Вероятнее всего истек таймаут ожидания данных из сокета судя по MVS>> ошибке.
MVS>> Найдите в cli.php строчку MVS>> $sp = fsockopen( $PeerAddr, $PeerPort, $errno, $errstr ); MVS>> И добавьте к ней 5ый параметр (тайм аут) MVS>> $sp = fsockopen( $PeerAddr, $PeerPort, $errno, $errstr, 30);
MVS>> должно помочь
> Добавление этого параметра не помогает. Да и по идее не в задержке > грабли. Ошибка "CGPro output format error at '=':" выводится сразу же, > как только начинает выполняться команда ListAccounts.
> В чем же все-таки дело...
Посмотрел еще раз, поставил пару экспериментов и вот :
function _parseResponse() { $line = fgets($this->sp, (1024*10)); $line = stripslashes($line); if($this->debug) echo "$line\n"; if(preg_match("/^(\d+)\s(.*)$/",$line,$matches)) { $this->errCode = $matches[1]; if($matches[1] == 201) { // inline response $this->inlineResponse = $matches[2]; $this->errMsg = "OK"; } else { // error $this->errMsg = rtrim($matches[2]); } $this->isSuccess(); } else { $this->_setStrangeError($line,$code); } }
Вся проблемма вот в этой строчке
$line = fgets($this->sp, (1024*10));
Т.е. из сокета читается только 10 килобайт данных, а список может быть ОООЧЧЧЕЕЕЕННННЬЬЬЬ большим и естественно он не влазит в эти 10 килобайт, у меня ошибка появилась когда вместо 10 я поставил 1 (нет у меня такого количества ящиков что бы проверить на кошках). Если считать данных меньше чем есть, то получается ошибка парности, о чем он и говорит,
>>CGPro output format error at '=':
у меня подобная ошибка была только из за задержек при чтении из сокета, поэтому сразу и предложил тайм аут увеличить. Думаю если поставить вместо 10 большее число все пройдет корректно, не думаю что это правильное решение, но как "затычка" должно работать.
>>> Выполняется следующая конструкция:
>>> $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
>>> Эта ошибка возникает, как я уже сказал, если в домене много аккаунтов. >>> Такой домен у меня один. А может эта ошибка возникает не из-за того, >>> что в нем много аккаунтов, а потому что он является главным >>> доменом?
>>> Чтобы это могло значить и как с этим бороться?
>>> Спасибо.
> ##################################################################> Вы получили это сообщение потому, что подписаны на список рассылки > <CGatePro@mx.ru>.
> Чтобы отписаться, отправьте сообщение на адрес <CGatePro-off@mx.ru> > Чтобы переключиться в режим дайджеста - mailto:<CGatePro-digest@mx.ru> > Чтобы переключиться в индексный режим - mailto:<CGatePro-index@mx.ru> > Для административных запросов адрес <CGatePro-request@mx.ru>
-- Наилучшие пожелания, Максим СтрепетиловПолучено Wed Nov 09 08:47:43 2005
Этот архив был сгенерирован hypermail 2.1.8 : Fri 24 Apr 2015 - 16:14:24 MSK