bubble: Binary safe alternative to serialize

Beitrag lesen

Im Übrigen versagt PHP::serialize bei Array's mit vielen Einträgen (> 20T)

Wow - 20T Einträge, also 20000000000000 Einträge? Da erstaunt mich, daß das überhaupt von PHP verwaltet werden kann ...

Also erst dachte ich 20000 (T=Tausend) sind gemeint, das ging aber ohne Probleme (zumindest CLI, Webserver würden wohl je nach Daten an ihr Speicherlimit kommen).

Dann hab ich mal versucht mich an 20000000000000 anzunähern.

$t1=time();$a=Array();for($j=0;$j<10000000;$j++){$a[]='c';}$t2=time();var_dump(strlen(serialize($a)));$t3=time();$a=Array();echo $t2-$t1,"s ", $t3-$t2,"s ",$t3-$t1,"s\n";  
int(178888903)  
31s 21s 52s

Da meine VM nur 2GB bekommen hat, fängt sie bei mir bei mehr an zu swappen und das hab ich dann nicht mehr probiert. :'D

Allerdings zeigt sich schon hier, dass das Serialisieren schneller als das Erzeugen ist, also wird wahrscheinlich eher das Speicherlimit versagen als alles andere.

Beim groben überfliegen vom Code vermute ich, dass die einzelnen Segmente sofort geschrieben werden und nicht im Arbeitsspeicher gehalten werden, was eventuell des Rätsels Lösung ist.

MfG
bubble

--
If "god" had intended us to drink beer, he would have given us stomachs. - David Daye