Pergunta

Estou assumindo que, para cada solicitação de página, o servidor web (por exemplo. Apache) cria uma nova instância de um script na memória. Podem estes casos se comunicar uns com os outros durante a execução? e passar dados também?

Foi útil?

Solução

Se você quer passar dados entre scripts em PHP eu sugiro usar qualquer memcached ou um banco de dados. Ou possivelmente APC.

Se os scripts pertencem à mesma sessão, eles poderiam, teoricamente, comunicar através da sessão, mas isso seria efetivamente uma comunicação unidirecional, na maioria dos casos, porque apenas um script pode acessar a sessão a qualquer momento (session_start () bloqueia o sessão até que o script termina a sessão implícita ou explicitamente).

Outras dicas

Eu acredito Martin e Cletus' sugestões são válidos. Minha escolha seria função da meta final do script.

  • A quantidade de dados que você estará jogando em torno de? Você pode lidar com a sobrecarga de um processo externo?
  • Que tipo de dados você está trocando? É normalizado? Ou é agora vale normalização?
  • Você vai precisar para se referir a esses dados mais tarde? Ou ele pode ser descartado depois de ser processado?
  • Será que esses scripts nunca correr em servidores diferentes?

  • arquivos plana, com um mecanismo de bloqueio

  • relacional DB
  • Document DB (armazenamento de chave / valor, seja persistente ou não)
  • memória compartilhada (APC, ou funções essenciais)
  • Filas de mensagens (MQ ativa e empresa)

Eu acho que você vai obter o maior valor exteriorizando o processo como você pode ter mais de uma máquina gestão das mensagens / dados e mais de um produzindo / consumindo-os.

O modelo que scripts PHP operar fora de realmente não contêm a noção de qualquer tipo de persistência na memória para esses scripts, já que geralmente eles são projetados para só correr para o mínimo de tempo necessário para servir a página solicitada. Isso tornaria mais difícil ter qualquer uso significativo para a comunicação com estado entre esses scripts, já que normalmente assim que a página é servida não há nada mais para o script para fazer. Assim normalmente qualquer comunicação entre scripts PHP é feito mais por meio da manipulação de entradas de banco de dados e outros.

Se você tem algum tipo de processamento contínuo que deve estar acontecendo para o qual você gostaria de estar passando dados ao redor, você pode querer olhar para outros modelos de aplicação web, como servlets.

Você deve ser capaz de fazer isso com um pouco de memória compartilhada, conforme descrito aqui: http://blog.taragana.com/index.php/archive/how-to-use-shared-memory-in-php/ (supondo que você' não está em execução no Windows)

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