[mapserver-users] PHP MapObj serialization?

Daniel Morissette morissette at dmsolutions.ca
Tue Jul 30 06:41:26 PDT 2002


Vinko,

The main reason why you cannot serialize a MapObj in PHP is that it is
just a set of wrappers on top of MapServer's internal C structures, and
hte PHP serialization functions cannot do anything about them... so you
get "invalid handle" errors from the serialized object because the
internal C structures don't exist any more.

In the current version, the only way to save the state of a mapObj is to
use $map->save($temp_filename), store the $temp_filename in your
$_SESSION, and load the saved mapfile on further requests.

I don't think serializing mapObj will ever be possible given the nature
of MapScript, but maybe some tricks can be implemented eventually to
save the mapfile to a session variable, or even have support for
persistent mapObj... but that's very far in our priority list.

Daniel


Vinko Vrsalovic wrote:
> 
> Hello,
> 
>         I'm trying to serialize a PHP MapObj for further use (another
>         page from the same session).
> 
>         From what I've read, this will not work if you don't have the
>         definition of the class in all the pages the object will be
>         used.
> 
>         I also presume that dl'ing the .so is not what is meant by
>         definition of the class. Is serializing and/or saving in a
>         session variable the mapobj possible?
> 
>         Ex:
> 
>         p1.php
>         <?php
>         dl('php_mapscript.so');
>         session_start();
>         $map = ms_newMapObj("file.map");
>         $map->draw();
> 
>         $_SESSION['map'] = $map;
>         /* or
>         $_SESSION['map'] = serialize($map);
>         */
> 
>         ?>
> 
>         p2.php
>         <?php
>         dl('php_mapscript.so');
>         session_start();
>         $map = $_SESSION['map'];
>         /* or
>         $map = unserialize($_SESSION['map']);
>         */
> 
>         ?>
> 
>         As I understood from the docs the serialization is not needed when
>         using $_SESSION.
> 
>         If i serialize/unserialize, i get the long forgotten:
> 
>         Fatal error: Object has an invalid _handle_ property in ...
> 
>         If i don't serialize/unserialize, i get the same error. :)
> 
>         Is there a trick to make PHP see the MapObj definition?
> 
> Thanks,
> --
> Vinko Vrsalovic <vinko[|- at -|]cprsig.cl>
> http://www.cprsig.cl



More information about the MapServer-users mailing list