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.

¿Fue útil?

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.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top