За последние 24 часа нас посетили 63157 программистов и 1744 робота. Сейчас ищут 809 программистов ...

php-soap + sessions

Тема в разделе "Прочие вопросы по PHP", создана пользователем krot-s, 2 фев 2007.

  1. krot-s

    krot-s Активный пользователь

    С нами с:
    2 фев 2007
    Сообщения:
    23
    Симпатии:
    0
    Начал вот разираться с soap и никак не могу решить такую проблему:
    с включенным SOAP_PERSISTENCE_SESSION
    состояние объекта сохраняется в пределах одного вызова клиентского скрипта. Kак сделать, чтобы сессия хранилась дольше?

    вот пример:
    server.php
    Код (Text):
    1.  
    2.     ini_set("soap.wsdl_cache_enabled", "0");
    3.  
    4.     session_start();
    5.    
    6.     class test_proc_response {
    7.         public $v1;
    8.         public $v2;
    9.     }
    10.    
    11.     class DNS {
    12.         public $t;
    13.  
    14.         function DNS()
    15.         {
    16.             $this->t = new test_proc_response();       
    17.             $this->t->v1 = date("c");
    18.             $this->t->v2 = "XXX";
    19.         }
    20.        
    21.         function set_v1($new_v1)
    22.         {
    23.             $this->t->v1 = "W";
    24.             $this->t->v2 = "W";
    25.             return "1";
    26.         }
    27.        
    28.         function get_v1()
    29.         {
    30.             return $this->t;           
    31.         }
    32.            
    33.     }
    34.  
    35.     $server = new SoapServer('test_1.wsdl',
    36.         array('my_type_1' => 'test_proc_response'));
    37.     $server->setClass("DNS");
    38.      $server->setPersistence(SOAP_PERSISTENCE_SESSION);
    39.    
    40.    
    41.     $server->handle();
    client.php
    Код (Text):
    1.  
    2.     ini_set("soap.wsdl_cache_enabled", "0");
    3.     //start_session();
    4.    
    5.     $client = new SoapClient('test_1.wsdl',
    6.         array('trace' => 1));
    7.        
    8.     class test_proc_response {
    9.         public $v1;
    10.         public $v2;
    11.     }
    12.     $val = new test_proc_response();
    13.    
    14.     try
    15.     {
    16.         print $client->set_v1($val);   // изминение переменной $t в server.php
    17.         $obj = $client->get_v1("1"); // получение ее же обратно
    18.        
    19.         print $obj->v1;
    20.         print $obj->v2;
    21.     }
    22.     catch (SoapFault $exception)
    23.     {
    24.         echo $exception;      
    25.     }  
    в пределах одного вызова client.php объект сохраняет свое состояние.
    а как сделать, чтобы при слде. вызове client.php я работал с тем же объектом? или это в принципе невозможно?

    p.s. надеюсь проблему объяснил понятно...