Проблема С Реализацией Веб Сервиса

Доброго времени суток.

Пытаюсь освоить веб сервис SOAP.

Прописал все по мануалу,




public function actions()

{

        return array(

            'wsdl' => array(

                'class' => 'CWebServiceAction',

            ),

        );

}



WSDL получаю, тут все ок. Далее есть пока единственный метод возвращающий ассоциативный массив.




    /**

     * @param string $needle     строка для поиска

     * @param array  $attributes атрибуты модели

     * @return array значение

     * @soap

     */

    public function findByName($needle, $attributes = array())

    {

        ...

    }



Создаю клиент, вызываю метод - в ряде случаев все отрабатывает нормально, иногда вылетает ошибка

"looks like we got no XML document". В ответе от сервера в этом случае приходит обрезанный xml последний тег выглядит вот так - </SOAP-ENV:Envelop. Преимущественно ошибка вываливается на больших пакетах, когда в массиве много значений.

Очень надеюсь на вашу помощь. Перерыл все, не нашел ничего похожего.

Набросал пример подтверждающий ошибку, может быть так будет нагляднее




<?php

class FiasController extends CController

{

    public function actions()

    {

        return array(

            'wsdl' => array(

                'class' => 'CWebServiceAction',

            ),

        );

    }


    /**

     * @return array

     * @soap

     */

    public function success()

    {

        $result = array();

        for ($i = 0; $i < 4; $i++) {

            $result[$i] = array(

                'foo1'  => '18ad96e6-5526-11e0-9c19-00248c654095',

                'foo2'  => '18ad96e6-5526-11e0-9c19-00248c654095',

                'foo3'  => '18ad96e6-5526-11e0-9c19-00248c654095',

                'foo4'  => '18ad96e6-5526-11e0-9c19-00248c654095',

                'foo5'  => '18ad96e6-5526-11e0-9c19-00248c654095',

                'foo6'  => '18ad96e6-5526-11e0-9c19-00248c654095',

                'foo7'  => '18ad96e6-5526-11e0-9c19-00248c654095',

                'foo8'  => '18ad96e6-5526-11e0-9c19-00248c654095',

                'foo9'  => '18ad96e6-5526-11e0-9c19-00248c654095',

                'foo10' => '18ad96e6-5526-11e0-9c19-00248c654095',

                'foo11' => '18ad96e6-5526-11e0-9c19-00248c654095',

                'foo12' => '18ad96e6-5526-11e0-9c19-00248c654095',

            );

        }

        return $result;

    }


    /**

     * @return array

     * @soap

     */

    public function fail()

    {

        $result = array();

        for ($i = 0; $i < 5; $i++) {

            $result[$i] = array(

                'foo1'  => '18ad96e6-5526-11e0-9c19-00248c654095',

                'foo2'  => '18ad96e6-5526-11e0-9c19-00248c654095',

                'foo3'  => '18ad96e6-5526-11e0-9c19-00248c654095',

                'foo4'  => '18ad96e6-5526-11e0-9c19-00248c654095',

                'foo5'  => '18ad96e6-5526-11e0-9c19-00248c654095',

                'foo6'  => '18ad96e6-5526-11e0-9c19-00248c654095',

                'foo7'  => '18ad96e6-5526-11e0-9c19-00248c654095',

                'foo8'  => '18ad96e6-5526-11e0-9c19-00248c654095',

                'foo9'  => '18ad96e6-5526-11e0-9c19-00248c654095',

                'foo10' => '18ad96e6-5526-11e0-9c19-00248c654095',

                'foo11' => '18ad96e6-5526-11e0-9c19-00248c654095',

                'foo12' => '18ad96e6-5526-11e0-9c19-00248c654095',

            );

        }

        return $result;

    }


    public function actionTestSoap()

    {

        ini_set("soap.wsdl_cache_enabled", "0");

        $client = new SoapClient('адрес_сервера/fias/wsdl/', array("trace"      => 1,

                                                                       "exceptions" => 0));


        $result = $client->success();

        echo "<b>Success Request:</b><br>";

        echo htmlspecialchars($client->__getLastRequest()) . "<br>";

        echo "<b>Success Response:</b><br>";

        echo htmlspecialchars($client->__getLastResponse()) . "<br>";

        echo "<b>Success Result:</b>";

        var_dump($result);

        $result = $client->fail();

        echo "<b>Fail Request:</b><br>";

        echo htmlspecialchars($client->__getLastRequest()) . "<br>";

        echo "<b>Fail Response:</b><br>";

        echo htmlspecialchars($client->__getLastResponse()) . "<br>";

        echo "<b>Fail Result:</b>";

        var_dump($result);

    }

}



В экшне fias/testSoap сначала вызываю функцию success - при этом все ок, потом функцию fail в этом случае xml ответ обрезан, конечный тег не закрывается. Разница между методами success и fail в том что во второй на 1 элемент в массиве больше.