Pergunta

Existe uma configuração pela qual eu possa obter alguns scripts para carga / executar automaticamente quando o PHP inicia como a obtenção de alguns constante até na memória global.

Também há uma memória global que é acessível através de utilizadores? Também sobre a memória que não há memória que é acessível por todos os usuários? Uma pessoa definir que outra pessoa o acesso é ele ou eu deveria ter que ler e escrever para o arquivo a cada hora para alguma coisa a ser compartilhada entre ou melhor, uma tabela temporária banco de dados.

Surpreso PHP não tem isso?

Graças.

Foi útil?

Solução

Se bem entendi, você quer PHP para executar algum script quando você iniciar o Apache, para armazenar alguns valores globalmente partilhados. Se eu estiver errado, por favor editar / comentário.

A resposta curta é: não, você não pode fazer isso. PHP não é exatamente um servidor que estadias em execução à espera de pedidos de clientes. Ele lida com cada solicitação HTTP individualmente.

A resposta longa é: bem ... você poderia fazer auto_prepend_file fazê-lo em cada solicitação. Você poderia criar algum script bash simples e usar isso para iniciar o Apache, em seguida, chamar um script PHP, mas não seria executado em Apache.

Quanto a memória compartilhada, existem algumas opções. Usando arquivos simples, um banco de dados, ou memcached é provavelmente o mais portátil. Algumas instalações têm funções a memória compartilhada habilitado, mas não é garantido.

Outras dicas

PHP não fornecer um cache global que é compartilhada entre scripts. Você pode contornar isso de maneiras diferentes, dependendo de suas necessidades.

Se você quiser configurar mundial constantes que não são caros para calcular, você pode escrever um script que define essas constantes, e em seguida, obter automaticamente este script para ser executado antes que o arquivo solicitado. Isso é feito usando o auto_prepend_file opção no php.ini.

Se você está computando valores caros, você pode usar memcached como um cache global que é acessível por todos os scripts PHP. Há várias APIs cliente para conectar a memcached usando PHP.

É claro, você também pode armazenar valores globais na usuário da sessão Se estes valores são por utilizador. Ou mesmo usar o MySQL.

Se você estiver usando algum tipo de framework MVC você pode definir suas variáveis ??lá e garantir que arquivo é carregado cada vez. Você pode usar $ GLOBALS [ 'var_name'] = $ value; e acesso isso em algum outro arquivo durante esse pedido.

Cada instância PHP script em execução tem as suas próprias variáveis ??globais, funções, constantes etc., não há nenhuma maneira de copiar uma variável de um correndo exemplo script para outro diretamente. No entanto, existem métodos indiretos como o uso de arquivos, banco de dados ou memcached.

Se você usar algum subsistema (como APC memória compartilhada, ou mesmo memcached), você pode executar script do gerador de dados automaticamente no apache início editando-o do script de inicialização (/etc/init.d/[apache2|httpd]). Como exemplo, você pode adicionar a onda ou pedido wget para o script gerador de direito após o início |. Restart

Há uma pequena probabilidade de estado não-inicializado no primeiro pedido 'externo', mas I'n certeza que você pode lidar com isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top