Frage

Ich habe einen Server mit vielen Kunden auf, wenn ich entwickle ich meine init.php enthalten, in dem ich eine __autoloader() Funktion habe, das die Datei mit dir_name(__FILE__)."/classes/".$className zum Beispiel enthält.

Aber gestern sah ich, dass der Server nicht die spezifische Klasse finden konnte, restartat ich Apache und dann wieder es hat funktioniert.

Jeder Kunde hat diese eigenen init.php ... (und damit viele __autoloads auf demselben Server)

customer1/init.php            : holds __autoload()
customer1/classes/class.php

customer2/init.php            : holds __autoload()
customer2/classes/class.php

Ich habe nicht ein paar Tests gemacht und ich hoffe, dass jemand meine Frage beantworten kann, bevor ich versuche, das Problem zu reproduzieren, aber denken Sie, es möglich ist, für PHP die falsche Autoload-Funktion zu nehmen, wenn Sie erhalten 2 oder mehr Anfragen zum gleichen Zeit?

Ist spl_autoload_register die Lösung?

Vielen Dank für einige Ideen oder Brainstorming.

War es hilfreich?

Lösung

Meine Vermutung ist, dass Sie einen Tippfehler haben sollten entweder in einen Ihres __autoload () Funktionen oder Sie mit der falschen init.php Datei.

Auch dir_name () nicht vorhanden ist, sollten Sie das ändern dirname () statt, oder Sie können auch den neuen dIR konstante für den gleichen Effekt, wenn Sie PHP verwenden> = 5,3.

EDIT: In Anbetracht Ihres Kommentars sollte Gebrauch verwenden:

require(realpath(dirname(__FILE__)) . '/classes/' . $className);

oder

require(realpath(__DIR__) . '/classes/' . $className);

Andere Tipps

Jede PHP Anfrage ist völlig unabhängig, in der Tat ist es unmöglich für Sie zwei Funktionen haben in dem gleichen PHP Antrag genannt __autoload(), so dass sie nicht stören. Mögliche Probleme:

  • Sie sind einschließlich der falschen Kunden init.php
  • Sie haben vergessen, die init.php Datei enthalten sein, in diesem Fall gibt es nicht autoloading überhaupt.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top