phpbar.de logo

Mailinglisten-Archive

[php] Fatal Error: Unable to initialize new token cache

[php] Fatal Error: Unable to initialize new token cache

Matthias Weh weh_(at)_feinarbeit.de
Mon, 06 Mar 2000 17:47:20 +0100


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