Pregunta
Tengo un servidor con muchos clientes en adelante, cuando desarrollo incluyo mi init.php en el que tengo una función __autoloader()
que incluye el archivo con dir_name(__FILE__)."/classes/".$className
por ejemplo.
Pero ayer vi que el servidor no pudo encontrar la clase específica, que restartat Apache y luego funcionó de nuevo.
Cada cliente tiene esta propia init.php ... (y por lo tanto muchos __autoloads en el mismo servidor)
customer1/init.php : holds __autoload() customer1/classes/class.php customer2/init.php : holds __autoload() customer2/classes/class.php
No he hecho algunas pruebas y espero que alguien pueda responder a mi pregunta antes de intentar reproducir el problema, pero ¿cree que es posible para php para tomar la función de carga automática mal cuando se obtiene 2 o más solicitudes al mismo tiempo?
Es spl_autoload_register la solución?
Muchas gracias por algunas ideas o brainstorming.
Solución
Mi conjetura es que usted debe tener un error en cualquiera de su __autoload () funciones o se está incluyendo el archivo init.php mal.
Además, nombre_dir () no existe, se debe cambiar para que nombredir () en su lugar o también puede utilizar la nueva DIR constante para el mismo efecto si está usando PHP> = 5.3.
EDIT: A la luz de su comentario, su uso debe utilizar:
require(realpath(dirname(__FILE__)) . '/classes/' . $className);
o
require(realpath(__DIR__) . '/classes/' . $className);
Otros consejos
Cada solicitud PHP es completamente independiente, de hecho, es imposible que usted tiene dos funciones con nombre __autoload()
en la misma petición PHP, por lo que no puede interferir. Posibles problemas:
- Usted está incluyendo del cliente equivocado
init.php
- Se le olvidó incluir el archivo
init.php
, en cuyo caso no es no de carga automática en absoluto.