Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Serializowanie obiektów i zapisywanie wsesji
Forum PHP.pl > Forum > PHP
propage
  1.  
  2. $this->soap = new soapclient($this->conf_url);
  3. $this->soap->soap_defencoding = 'UTF-8';
  4. $this->soap->decode_utf8 = false;
  5.  
  6. $_SESSION['allegro']['soap'] = serialize($this->soap);
  7.  
  8. a potem
  9.  
  10. $this->soap = unserialize($_SESSION['allegro']['soap']);
  11.  
  12.  


Niestety jakie kolwiek odpołania późniejsze do $this->soap powodują błedy - "<b>Warning</b>: SoapClient::__call(): supplied argument is not a valid sdl resource in <b>C:\webserv\httpd-users\iq\class\allegro.php</b> on line <b>283</b><br />"
Fifi209
Po tak małym kawałku kodu ciężko jest coś napisać.

Wystartowałeś sesję?
propage
Tak sesja jest
gothye
więc zapisuj na dysku z numerem sid sesji ...
em1X
Chyba koledzy nie rozumieją podstaw serializacji.
Klasa SoapClient nie implementuje magicznych metod __sleep oraz __wakeup, które definiują co obiekt powinien wykonać przed i po serializacji - w tym przypadku ponowne połączenie się z usługą - stąd te błędy.

Proponuję napisanie własnej klasy-otoczki dla klasy SoapClient, która wykorzystująć metodę __wakeup() ponownie połączy się z serwerem allegro.
propage
Serializacje tą chciałem zrobić, po to aby nie trzeba było się co chwile łączyć z allegro, więc chyba nie ma to sensu.
em1X
a kto powiedział, że trzeba się będzie co chwilę łączyć z allegro?

  1. public function __wakeup() {
  2. // ponowne polaczenie z allegro
  3. $this->connect();
  4. }


i będzie można z każdego miejsca korzystać z zalet serializacji
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.