Pergunta
Eu tenho um servidor com muitos clientes, quando eu desenvolver incluo o meu init.php em que tenho uma função __autoloader()
que inclui o arquivo com dir_name(__FILE__)."/classes/".$className
por exemplo.
Mas ontem eu vi que o servidor não conseguiu encontrar a classe específica, eu restartat apache e, em seguida, ele trabalhou novamente.
Cada cliente tem essa própria init.php ... (e, portanto, muitas __autoloads no mesmo servidor)
customer1/init.php : holds __autoload() customer1/classes/class.php customer2/init.php : holds __autoload() customer2/classes/class.php
Eu não tenho feito alguns testes e espero que alguém pode responder a minha pergunta antes de tentar reproduzir o problema, mas você acha que é possível para php para assumir a função autoload errado quando você obter 2 ou mais solicitações ao mesmo tempo?
É spl_autoload_register a solução?
Muito obrigado por algumas ideias ou brainstorming.
Solução
Meu palpite é que você deve ter um erro de digitação em qualquer um dos seus __autoload () funções ou você está incluindo o arquivo init.php errado.
Além disso, dir_name () não existe, você deve mudar isso para dirname () em vez ou você também pode usar a nova DIR constante para o mesmo efeito se você estiver usando PHP> = 5.3.
EDIT: À luz do seu comentário, o uso deve usar:
require(realpath(dirname(__FILE__)) . '/classes/' . $className);
ou
require(realpath(__DIR__) . '/classes/' . $className);
Outras dicas
Cada solicitação PHP é completamente separado, de fato, é impossível para você ter duas funções nomeadas __autoload()
no mesmo pedido PHP, então eles não podem interferir. Possíveis problemas:
- Você está incluindo o cliente errado
init.php
- Você se esqueceu de incluir o arquivo
init.php
, caso em que não é não auotocarregáveis ??em tudo.