On Thu, 18 Mar 2010, Ben DeMott wrote: > So is the data structure thats being serialized remaining in some form > thats reflective of its binary encoding on the system. Or is there > some byte-encoding that goes on to generalize the binary structure?
PHP only knows about binary text, and then numbers and floats. Our current serialize format is just text based. > I guess ... Does it find the values in memory of the distinct values, > and then create a serialized set of indexes in a c-compatible > data-type? > or... is this just another form of string serialization, where > variables are represented by strings encoded in ASCII? The current serializer does do the latter. pecl/dbus does... DBUS serialization of course. > If this is a binary serialization two additional questions: > 1.) Does this mean that you can to some accuracy determine the size of > an in-memory variable by counting the sizeof() on the components that > make up the data-structure in C? nope, that won't work as there are strings that are at least two blocks, and arrays and objects are tons. > 2.) Can the PHP sessions serialization be made to use this type of > serialization - so the serialized values could be shared between > multiple applications.. (let me give you an example) Thereis an igbinary extension/serializer. > Would I be better off just re-implementing the PHP C code for its > session serializer/deserializer in Python than attempting to keep it > binary? What you want... both work. > For PHP Sessions, lets say you use memcached to store a serialized > representation of the session. > Lets also say that you would like to read that session data > occasionally by python to offload work that your webserver would > normally have to perform. > > If you were to write a binary serialized form to memory - the C > implementation of the serialization could by very easily ported to > Python as an extension and both could be maintained with ease > (as both PHP and Python are written in C, a Java variant wouldn't be > too hard either using JNI) The problem is that PHP and Python have different dataytpes, and dbus has yet again others. That is always going to be a problem. > I guess this brings up the question of - How hard would it be to > expose the binary object that dbus sends over-the-wire so it could be > written to file instead? You need a tool such as dbus-monitor, but you need to write the deserialization from DBUS into your "fileformat" yet again. > Overall it would be nice if PHP had a functionality similar to Pythons > Pickle -> to expose to the user so they could store binary > representations of objects as they saw fit. > > It seems to me this would be vastly more efficient than an > ascii-encoding and serialization as well. That's no different from what serialization does really. There is http://opensource.dynamoid.com/ for binary serializations. > If my logic is poorly formed because of a lack of understanding please > feel free to educate me! You write too much text :P regards, Derick -- http://derickrethans.nl | http://xdebug.org Like Xdebug? Consider a donation: http://xdebug.org/donate.php twitter: @derickr and @xdebug -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php