Mailinglisten-Archive |
Sebastian Mendel wrote: >> Mal ganz davon abgesehen, dass die include_once bzw. require_once >> sowieso ziemlich lahm sind. IMO liegt das daran, dass für jede Datei ein >> fseek gemacht wird, dabei ist es egal, ob die bereits geladen wurde. >> Deswegen gibt es bei APC auch die Option, die Funktionen überschreiben >> zu lassen. >> >> Ansonsten ist es eigentlich immer gut absolute Pfade zu verwenden: >> z.B. include_once MY_APP_ROOT_DIR . '/Attachment.class.php' >> >> Trifft natürlich nur bei Opcode-Caches zu. > > IMHO ist das ein sehr altes Problem was schon lange behoben wurde, zumindest > bei APC Unter http://de.php.net/apc apc.stat integer [snip] For included/required files this option applies as well, but note that if you are using relative path includes (any path that doesn't start with / on Unix) APC has to check in order to uniquely identify the file. If you use absolute path includes APC can skip the stat and use that absolute path as the unique identifier for the file. Wenn man diese Option jetzt aktiviert, erscheint bei Dateien die mit keinem absoluten Pfad aufgerufen werden: realpath failed to canonicalize SException.class.php - bailing bei dem Code im __autoload: if (isset($mapping[$classname])) { include_once $mapping[$classname]; } ändere ich das aber wie ursprünglich kommt keine Warnung mehr: if (isset($mapping[$classname])) { include_once SC_INCLUDES_DIR . "/" . $mapping[$classname]; } Aber ich gebe zu, diese Konfiguration ist wahrscheinlich ziemlich selten. Trotzdem denke ich, dass wenn man den Pfad in einer Konstanten hat, diesen auch bei includes verwenden sollte, zumindest an globalen Stellen wie dem __autoload. Gruß, Martin
php::bar PHP Wiki - Listenarchive