Domanda

Suppongo che per ogni richiesta di pagina, il server web (es. Apache) crei una nuova istanza di uno script in memoria. Queste istanze possono comunicare tra loro durante l'esecuzione? e passare anche i dati?

È stato utile?

Soluzione

Se vuoi passare i dati tra gli script in PHP ti suggerisco di usare memcached o un database. O forse APC.

Se gli script appartengono alla stessa sessione, potrebbero teoricamente comunicare tramite la sessione, ma nella maggior parte dei casi si tratterebbe di una comunicazione unidirezionale poiché solo uno script può accedere alla sessione alla volta (session_start () blocca il sessione fino a quando lo script non termina la sessione in modo implicito o esplicito).

Altri suggerimenti

Credo che i suggerimenti di Martin e Cletus siano validi. La mia scelta sarebbe funzione dell'obiettivo finale della sceneggiatura.

  • Quanti dati lancerai? Riesci a gestire l'overhead di un processo esterno?
  • Che tipo di dati stai scambiando? È normalizzato? O ora vale la pena normalizzare?
  • Dovrai fare riferimento a tali dati in un secondo momento? O può essere scartato dopo essere stato elaborato?
  • Questi script verranno mai eseguiti su server diversi?

  • File flat, con meccanismo di blocco

  • DB relazionale
  • DB documento (archivio chiave / valore, permanente o meno)
  • Memoria condivisa (APC o funzioni principali)
  • Code dei messaggi (MQ e società attivi)

Penso che otterrai il massimo valore esternalizzando il processo in quanto puoi avere più di una macchina che gestisce i messaggi / dati e più di una che li produce / consuma.

Il modello da cui operano gli script PHP non contiene in realtà l'idea di persistenza in memoria per quegli script, dal momento che generalmente sono progettati per funzionare solo per il minimo tempo necessario per servire la pagina richiesta. Ciò renderebbe difficile avere un uso significativo per la comunicazione con stato tra quegli script, dal momento che in genere una volta che la pagina viene pubblicata non c'è altro da fare per lo script. Di solito, quindi, qualsiasi comunicazione tra gli script PHP viene fatta di più attraverso la manipolazione delle voci del database e simili.

Se si dispone di una sorta di elaborazione continua che dovrebbe avvenire per la quale si desidera trasferire i dati, è possibile esaminare altri modelli di applicazioni Web come i servlet.

Dovresti essere in grado di farlo con un po 'di memoria condivisa, come descritto qui: http://blog.taragana.com/index.php/archive/how-to-use-shared-memory-in-php/ (assumendo che tu ' non in esecuzione su Windows)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top