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.

Foi útil?

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.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top