Mailinglisten-Archive |
Hallo Ulf, > > Fatal error: Unable to initialize a new token cache in > > /usr/home/httpd/phplib/session.inc on line 284 > > > 1. Was will mir der Fehler sagen? > > Geraten: Speicherprobleme? Dachte ich mir auch. > eval() führt PHP Code aus. PHPLIB macht nichts anderes als PHP-Code zu > erzeugen (serialize), in einer Datenbank zu speichern und mit einem > page_open() wieder auszuführen. Ach so ... sah auch irgendwie so aus. > Mit einem $a=12; $sess->register("a"); page_close(); wird folgender PHP > Code generiert: $GLOBALS["a"] = "12"; Dieser Code wird so verpackt, daß > er ohne Probleme in die Datenbank paßt (base64), durch page_open() > ausgelesen und mit eval() ausgeführt, bevor Dein Skript die Arbeit > aufnimmt. Ja, bei serialize habe ich schon mal "zugeschaut", deshalb weiss ich ja auch, dass der Fehler erst nach einer ganzen Weile (einer ganzen Reihe von Variablen) auftritt. > Für einfache Variablen und Arrays funktioniert das ganz ordentlich, bei > Objekten muß man angeben wie die Objekte heißen sollen (deshalb var > classname = "mein";) und welche Slots gespeichert werden müssen ( > deshalb var $persistent_slots = array("a", "b"); ) - mit dem serialize > von PHP4 wird das alles besser. Danke. Das ist mir allerdings bekannt, sonst waere ich ja auch nicht in die Probleme geraten. > > 3. Wie kann ich diesen Fehler verhindern? Naiv gedacht wuerde ich sagen, > > dass hier nur einfach die Dimensionierung von irgendwas geaendert werden > > muss, aber ich weiss halt nicht was und ob das ueberhaupt stimmt. > > Keine Ahnung. Ich glaube nicht, daß das PHPLIB serialize buggy ist, > dafür wird es zuviel benutzt. Das wollte ich ja auch nicht sagen. Mittlerweile arbeite ich mit einer abgespeckten Version meiner Applikation, die einfach weniger Daten registriert. Dann klappt das auch, es muss also ein Dimensionierungsproblem sein. Vielmehr interessieren wuerde mich die Frage, an welchen Parametern ich drehen muss (welchen Konfigurationsfiles), damit das Problem auch mit meiner normalen Datenmenge nicht auftritt. Und deshalb war ja meine Frage, ob jemand mit der Fehlermeldung was anfangen kann (was ist ein token cache und was hat er mit eval() zu tun?). > Ich glaube, man kann es aus der Bahn werfen, wenn man PHP Code in einer > Variablen speichert und dann in die Session wirft, aber das machst Du > nicht, oder? Falls doch mach ein base54decode auf den Variableninhalt. Nein, das mache ich nicht. Seufz, es scheint, als muesste ich wohl auf PHP4 warten. Gruss, Matthias
php::bar PHP Wiki - Listenarchive