2012-04-19 10 views
8

Ricordo di aver letto su php.net (anche se sfortunatamente non riesco a trovare la pagina) che l'interprete PHP può essere eseguito in diversi modi - più comunemente, ogni volta che viene richiesta una pagina, un'istanza del L'interprete PHP viene creato, fa il suo corso e quindi viene distrutto, insieme a tutta la memoria associata a quella particolare chiamata di pagina. Apparentemente, è anche possibile permettere a tutta la memoria di soffermarsi, in modo che possa essere riutilizzata in future chiamate di pagina; come ho capito, essenzialmente permettendo a più script PHP diversi di accedere e modificare gli stessi oggetti, senza perderli una volta completato lo script.Oggetti PHP che rimangono in memoria

O almeno, quindi mi ricordo. C'è qualche verità in questo? Se sì, come lo installerei?

+3

Che cosa stai cercando di risolvere? Qual è il problema originale? – zerkms

+8

Forse la variabile $ _SESSION è tutto ciò di cui hai bisogno :) – jantimon

+0

Se vuoi conservare gli oggetti in memoria, quindi memorizzali nella cache in APC o Memcached. Ma sì, forse stai solo cercando funzionalità di sessione. – halfer

risposta

5

php non funziona in questo modo. è circa correre e dimenticare.

è possibile salvare i dati tra le richieste utilizzando le estensioni di memoria condivisa userland, ad esempio: apc, xcache, memcached, ecc

o utilizzando la matrice dei dati della sessione dopo aver chiamato session_start

$ _SESSION

non pensare agli script php come un'applicazione java ad es. Tomcat. php standard non è stato progettato per tale caso d'uso. compilatore PHP funziona al volo.

+0

Ho trovato [session_name] (http://php.net/manual/en/function.session-name.php) molto utile con questo. Ogni file può condividere lo stesso nome sessione e tutti i dati rilevanti possono essere archiviati nell'oggetto di sessione. In questo modo, posso eseguire un file di init che imposta l'oggetto di sessione, e quindi tutti i file di script correlati possono usarlo di conseguenza. – Monchoman45

+0

@ Monchoman45 secondo me le sessioni non sono fatte per sostituire $ GLOBALS o il caching delle pagine se questo è quello che fai;) – Hajo

0

Diamo il soggiorno di server tra le richieste, in modo sarà oggetti fare:

  • appserver-in-php - Generic approccio applicazioni HTTP per PHP5.3 + (ispirato da rack e WSGI)

Con le applicazioni ben scritti questo ti dà più velocità rispetto a APC, tuttavia non si scala tra gli utenti se hai bisogno di mettere su caselle diverse (puoi ancora usare sessioni adesive).

1

È possibile utilizzare shared memory per alcuni di ciò che si desidera, ma Redis/Memcache sono probabilmente scommesse migliori.