Memorizzazione nella cache di PHP senza problemi con le autorizzazioni dei file (Inoltre, Come emulare le variabili dell'applicazione ASP in PHP)

StackOverflow https://stackoverflow.com/questions/470399

Domanda

Sto cercando di implementare un tipo di memorizzazione nella cache in uno script PHP che verrà distribuito su molti client / siti diversi, che verrà distribuito da utenti abbastanza non tecnici, utilizzando una varietà di host web. A causa della natura non tecnica degli utenti, vorrei evitare di chiedere loro di modificare le autorizzazioni dei file. La memorizzazione nella cache deve avvenire attraverso le sessioni, quindi l'utilizzo delle variabili di sessione è fuori. Se lo stavo codificando in ASP, utilizzerei le variabili dell'applicazione, ma non esistono in PHP (per quanto ne so)

Qualcuno ha qualche suggerimento su come realizzare questo?

Ecco alcune possibilità che ho considerato, qualsiasi commento su questi sarebbe utile:

  • Memorizzazione nella cache tramite file nelle cartelle temporanee del sistema - Potrei usare sys_get_temp_dir () (o qualche funzione simile lanciata a casa su PHP4) per aiutare a trovare una tale cartella. Lo svantaggio qui è che probabilmente non funzionerebbe sugli host che utilizzano la restrizione openbase_dir
  • Qualche sito web che ho visto menzionato, inducendo PHP a far sì che tutte le sessioni utente condividano lo stesso stato di sessione costringendo così le variabili di sessione ad agire come variabili di sessione. Ovviamente non riesco a trovare quel post ora ... Sembra comunque spaventoso. (Aggiornerò questa domanda con il link a questo post una volta trovata di nuovo)
  • Utilizza un archivio dati di terze parti come il servizio di archiviazione semplice di Amazon - sembra eccessivo
  • Memorizza nella cache i dati su un server che controllo e chiedi al client di scaricare nuovi dati da lì a ogni hit.

Ancora una volta, tutti i commenti su queste idee o eventuali nuovi sarebbero apprezzati.

AGGIORNAMENTO: Ho provato a utilizzare session_id () per utilizzare uno stato di sessione condiviso, ma non funziona. Ogni sessione mantiene il proprio "GlobalCache", qualche idea sul perché ?:

// This code doesn't work, but the similar code in my answer does!

function test() {
    if (!

Sto cercando di implementare un tipo di memorizzazione nella cache in uno script PHP che verrà distribuito su molti client / siti diversi, che verrà distribuito da utenti abbastanza non tecnici, utilizzando una varietà di host web. A causa della natura non tecnica degli utenti, vorrei evitare di chiedere loro di modificare le autorizzazioni dei file. La memorizzazione nella cache deve avvenire attraverso le sessioni, quindi l'utilizzo delle variabili di sessione è fuori. Se lo stavo codificando in ASP, utilizzerei le variabili dell'applicazione, ma non esistono in PHP (per quanto ne so)

Qualcuno ha qualche suggerimento su come realizzare questo?

Ecco alcune possibilità che ho considerato, qualsiasi commento su questi sarebbe utile:

  • Memorizzazione nella cache tramite file nelle cartelle temporanee del sistema - Potrei usare sys_get_temp_dir () (o qualche funzione simile lanciata a casa su PHP4) per aiutare a trovare una tale cartella. Lo svantaggio qui è che probabilmente non funzionerebbe sugli host che utilizzano la restrizione openbase_dir
  • Qualche sito web che ho visto menzionato, inducendo PHP a far sì che tutte le sessioni utente condividano lo stesso stato di sessione costringendo così le variabili di sessione ad agire come variabili di sessione. Ovviamente non riesco a trovare quel post ora ... Sembra comunque spaventoso. (Aggiornerò questa domanda con il link a questo post una volta trovata di nuovo)
  • Utilizza un archivio dati di terze parti come il servizio di archiviazione semplice di Amazon - sembra eccessivo
  • Memorizza nella cache i dati su un server che controllo e chiedi al client di scaricare nuovi dati da lì a ogni hit.

Ancora una volta, tutti i commenti su queste idee o eventuali nuovi sarebbero apprezzati.

AGGIORNAMENTO: Ho provato a utilizzare session_id () per utilizzare uno stato di sessione condiviso, ma non funziona. Ogni sessione mantiene il proprio "GlobalCache", qualche idea sul perché ?:

<*>

AGGIORNAMENTO: alcuni hanno suggerito di utilizzare memcached, che in realtà è un'ottima soluzione per alcuni, ma poiché non ho il controllo sull'ambiente del server finale non è un'opzione. L'idea è di avere uno script che le persone possano semplicemente FTP fino a un account di hosting condiviso che funzioni immediatamente.

AGGIORNAMENTO: qualcuno mi ha suggerito di creare la mia cartella cache con lo script, ma non avrei bisogno di creare una tale cartella all'interno di una cartella che aveva già le autorizzazioni di scrittura?

AGGIORNAMENTO, SOLUZIONE TROVATA: Ho finito per capire i problemi nel mio script di sessione globale e ho pubblicato la mia risposta in tal senso. Grazie per l'aiuto a tutti.

SESSION['session_count'])

Sto cercando di implementare un tipo di memorizzazione nella cache in uno script PHP che verrà distribuito su molti client / siti diversi, che verrà distribuito da utenti abbastanza non tecnici, utilizzando una varietà di host web. A causa della natura non tecnica degli utenti, vorrei evitare di chiedere loro di modificare le autorizzazioni dei file. La memorizzazione nella cache deve avvenire attraverso le sessioni, quindi l'utilizzo delle variabili di sessione è fuori. Se lo stavo codificando in ASP, utilizzerei le variabili dell'applicazione, ma non esistono in PHP (per quanto ne so)

Qualcuno ha qualche suggerimento su come realizzare questo?

Ecco alcune possibilità che ho considerato, qualsiasi commento su questi sarebbe utile:

  • Memorizzazione nella cache tramite file nelle cartelle temporanee del sistema - Potrei usare sys_get_temp_dir () (o qualche funzione simile lanciata a casa su PHP4) per aiutare a trovare una tale cartella. Lo svantaggio qui è che probabilmente non funzionerebbe sugli host che utilizzano la restrizione openbase_dir
  • Qualche sito web che ho visto menzionato, inducendo PHP a far sì che tutte le sessioni utente condividano lo stesso stato di sessione costringendo così le variabili di sessione ad agire come variabili di sessione. Ovviamente non riesco a trovare quel post ora ... Sembra comunque spaventoso. (Aggiornerò questa domanda con il link a questo post una volta trovata di nuovo)
  • Utilizza un archivio dati di terze parti come il servizio di archiviazione semplice di Amazon - sembra eccessivo
  • Memorizza nella cache i dati su un server che controllo e chiedi al client di scaricare nuovi dati da lì a ogni hit.

Ancora una volta, tutti i commenti su queste idee o eventuali nuovi sarebbero apprezzati.

AGGIORNAMENTO: Ho provato a utilizzare session_id () per utilizzare uno stato di sessione condiviso, ma non funziona. Ogni sessione mantiene il proprio "GlobalCache", qualche idea sul perché ?:

<*>

AGGIORNAMENTO: alcuni hanno suggerito di utilizzare memcached, che in realtà è un'ottima soluzione per alcuni, ma poiché non ho il controllo sull'ambiente del server finale non è un'opzione. L'idea è di avere uno script che le persone possano semplicemente FTP fino a un account di hosting condiviso che funzioni immediatamente.

AGGIORNAMENTO: qualcuno mi ha suggerito di creare la mia cartella cache con lo script, ma non avrei bisogno di creare una tale cartella all'interno di una cartella che aveva già le autorizzazioni di scrittura?

AGGIORNAMENTO, SOLUZIONE TROVATA: Ho finito per capire i problemi nel mio script di sessione globale e ho pubblicato la mia risposta in tal senso. Grazie per l'aiuto a tutti.

SESSION['session_count'] = 0;

Sto cercando di implementare un tipo di memorizzazione nella cache in uno script PHP che verrà distribuito su molti client / siti diversi, che verrà distribuito da utenti abbastanza non tecnici, utilizzando una varietà di host web. A causa della natura non tecnica degli utenti, vorrei evitare di chiedere loro di modificare le autorizzazioni dei file. La memorizzazione nella cache deve avvenire attraverso le sessioni, quindi l'utilizzo delle variabili di sessione è fuori. Se lo stavo codificando in ASP, utilizzerei le variabili dell'applicazione, ma non esistono in PHP (per quanto ne so)

Qualcuno ha qualche suggerimento su come realizzare questo?

Ecco alcune possibilità che ho considerato, qualsiasi commento su questi sarebbe utile:

  • Memorizzazione nella cache tramite file nelle cartelle temporanee del sistema - Potrei usare sys_get_temp_dir () (o qualche funzione simile lanciata a casa su PHP4) per aiutare a trovare una tale cartella. Lo svantaggio qui è che probabilmente non funzionerebbe sugli host che utilizzano la restrizione openbase_dir
  • Qualche sito web che ho visto menzionato, inducendo PHP a far sì che tutte le sessioni utente condividano lo stesso stato di sessione costringendo così le variabili di sessione ad agire come variabili di sessione. Ovviamente non riesco a trovare quel post ora ... Sembra comunque spaventoso. (Aggiornerò questa domanda con il link a questo post una volta trovata di nuovo)
  • Utilizza un archivio dati di terze parti come il servizio di archiviazione semplice di Amazon - sembra eccessivo
  • Memorizza nella cache i dati su un server che controllo e chiedi al client di scaricare nuovi dati da lì a ogni hit.

Ancora una volta, tutti i commenti su queste idee o eventuali nuovi sarebbero apprezzati.

AGGIORNAMENTO: Ho provato a utilizzare session_id () per utilizzare uno stato di sessione condiviso, ma non funziona. Ogni sessione mantiene il proprio "GlobalCache", qualche idea sul perché ?:

<*>

AGGIORNAMENTO: alcuni hanno suggerito di utilizzare memcached, che in realtà è un'ottima soluzione per alcuni, ma poiché non ho il controllo sull'ambiente del server finale non è un'opzione. L'idea è di avere uno script che le persone possano semplicemente FTP fino a un account di hosting condiviso che funzioni immediatamente.

AGGIORNAMENTO: qualcuno mi ha suggerito di creare la mia cartella cache con lo script, ma non avrei bisogno di creare una tale cartella all'interno di una cartella che aveva già le autorizzazioni di scrittura?

AGGIORNAMENTO, SOLUZIONE TROVATA: Ho finito per capire i problemi nel mio script di sessione globale e ho pubblicato la mia risposta in tal senso. Grazie per l'aiuto a tutti.

SESSION['session_count']++; $count = get_cache( 'count' ); print "pre application count: $count<br>"; if ( !$count ) $count = 0; $count++; print "session_id: " . session_id() . "<br>"; print "post application count: $count<br>"; print "session_count: " .

Sto cercando di implementare un tipo di memorizzazione nella cache in uno script PHP che verrà distribuito su molti client / siti diversi, che verrà distribuito da utenti abbastanza non tecnici, utilizzando una varietà di host web. A causa della natura non tecnica degli utenti, vorrei evitare di chiedere loro di modificare le autorizzazioni dei file. La memorizzazione nella cache deve avvenire attraverso le sessioni, quindi l'utilizzo delle variabili di sessione è fuori. Se lo stavo codificando in ASP, utilizzerei le variabili dell'applicazione, ma non esistono in PHP (per quanto ne so)

Qualcuno ha qualche suggerimento su come realizzare questo?

Ecco alcune possibilità che ho considerato, qualsiasi commento su questi sarebbe utile:

  • Memorizzazione nella cache tramite file nelle cartelle temporanee del sistema - Potrei usare sys_get_temp_dir () (o qualche funzione simile lanciata a casa su PHP4) per aiutare a trovare una tale cartella. Lo svantaggio qui è che probabilmente non funzionerebbe sugli host che utilizzano la restrizione openbase_dir
  • Qualche sito web che ho visto menzionato, inducendo PHP a far sì che tutte le sessioni utente condividano lo stesso stato di sessione costringendo così le variabili di sessione ad agire come variabili di sessione. Ovviamente non riesco a trovare quel post ora ... Sembra comunque spaventoso. (Aggiornerò questa domanda con il link a questo post una volta trovata di nuovo)
  • Utilizza un archivio dati di terze parti come il servizio di archiviazione semplice di Amazon - sembra eccessivo
  • Memorizza nella cache i dati su un server che controllo e chiedi al client di scaricare nuovi dati da lì a ogni hit.

Ancora una volta, tutti i commenti su queste idee o eventuali nuovi sarebbero apprezzati.

AGGIORNAMENTO: Ho provato a utilizzare session_id () per utilizzare uno stato di sessione condiviso, ma non funziona. Ogni sessione mantiene il proprio "GlobalCache", qualche idea sul perché ?:

<*>

AGGIORNAMENTO: alcuni hanno suggerito di utilizzare memcached, che in realtà è un'ottima soluzione per alcuni, ma poiché non ho il controllo sull'ambiente del server finale non è un'opzione. L'idea è di avere uno script che le persone possano semplicemente FTP fino a un account di hosting condiviso che funzioni immediatamente.

AGGIORNAMENTO: qualcuno mi ha suggerito di creare la mia cartella cache con lo script, ma non avrei bisogno di creare una tale cartella all'interno di una cartella che aveva già le autorizzazioni di scrittura?

AGGIORNAMENTO, SOLUZIONE TROVATA: Ho finito per capire i problemi nel mio script di sessione globale e ho pubblicato la mia risposta in tal senso. Grazie per l'aiuto a tutti.

SESSION['session_count'] . "<br>"; set_cache('count', $count); } function set_cache( $name, $value ) { $old_session = session_id(); print "old_session (set): $old_session<br>"; session_id("GlobalCache"); print "new_session (set): " . session_id() . "<br>";

Sto cercando di implementare un tipo di memorizzazione nella cache in uno script PHP che verrà distribuito su molti client / siti diversi, che verrà distribuito da utenti abbastanza non tecnici, utilizzando una varietà di host web. A causa della natura non tecnica degli utenti, vorrei evitare di chiedere loro di modificare le autorizzazioni dei file. La memorizzazione nella cache deve avvenire attraverso le sessioni, quindi l'utilizzo delle variabili di sessione è fuori. Se lo stavo codificando in ASP, utilizzerei le variabili dell'applicazione, ma non esistono in PHP (per quanto ne so)

Qualcuno ha qualche suggerimento su come realizzare questo?

Ecco alcune possibilità che ho considerato, qualsiasi commento su questi sarebbe utile:

  • Memorizzazione nella cache tramite file nelle cartelle temporanee del sistema - Potrei usare sys_get_temp_dir () (o qualche funzione simile lanciata a casa su PHP4) per aiutare a trovare una tale cartella. Lo svantaggio qui è che probabilmente non funzionerebbe sugli host che utilizzano la restrizione openbase_dir
  • Qualche sito web che ho visto menzionato, inducendo PHP a far sì che tutte le sessioni utente condividano lo stesso stato di sessione costringendo così le variabili di sessione ad agire come variabili di sessione. Ovviamente non riesco a trovare quel post ora ... Sembra comunque spaventoso. (Aggiornerò questa domanda con il link a questo post una volta trovata di nuovo)
  • Utilizza un archivio dati di terze parti come il servizio di archiviazione semplice di Amazon - sembra eccessivo
  • Memorizza nella cache i dati su un server che controllo e chiedi al client di scaricare nuovi dati da lì a ogni hit.

Ancora una volta, tutti i commenti su queste idee o eventuali nuovi sarebbero apprezzati.

AGGIORNAMENTO: Ho provato a utilizzare session_id () per utilizzare uno stato di sessione condiviso, ma non funziona. Ogni sessione mantiene il proprio "GlobalCache", qualche idea sul perché ?:

<*>

AGGIORNAMENTO: alcuni hanno suggerito di utilizzare memcached, che in realtà è un'ottima soluzione per alcuni, ma poiché non ho il controllo sull'ambiente del server finale non è un'opzione. L'idea è di avere uno script che le persone possano semplicemente FTP fino a un account di hosting condiviso che funzioni immediatamente.

AGGIORNAMENTO: qualcuno mi ha suggerito di creare la mia cartella cache con lo script, ma non avrei bisogno di creare una tale cartella all'interno di una cartella che aveva già le autorizzazioni di scrittura?

AGGIORNAMENTO, SOLUZIONE TROVATA: Ho finito per capire i problemi nel mio script di sessione globale e ho pubblicato la mia risposta in tal senso. Grazie per l'aiuto a tutti.

SESSION[$name] = $value; session_id( $old_session ); } function get_cache( $name ) { $old_session = session_id(); print "old_session (get): $old_session<br>"; session_id("GlobalCache"); print "new_session (get): " . session_id() . "<br>"; $value =

Sto cercando di implementare un tipo di memorizzazione nella cache in uno script PHP che verrà distribuito su molti client / siti diversi, che verrà distribuito da utenti abbastanza non tecnici, utilizzando una varietà di host web. A causa della natura non tecnica degli utenti, vorrei evitare di chiedere loro di modificare le autorizzazioni dei file. La memorizzazione nella cache deve avvenire attraverso le sessioni, quindi l'utilizzo delle variabili di sessione è fuori. Se lo stavo codificando in ASP, utilizzerei le variabili dell'applicazione, ma non esistono in PHP (per quanto ne so)

Qualcuno ha qualche suggerimento su come realizzare questo?

Ecco alcune possibilità che ho considerato, qualsiasi commento su questi sarebbe utile:

  • Memorizzazione nella cache tramite file nelle cartelle temporanee del sistema - Potrei usare sys_get_temp_dir () (o qualche funzione simile lanciata a casa su PHP4) per aiutare a trovare una tale cartella. Lo svantaggio qui è che probabilmente non funzionerebbe sugli host che utilizzano la restrizione openbase_dir
  • Qualche sito web che ho visto menzionato, inducendo PHP a far sì che tutte le sessioni utente condividano lo stesso stato di sessione costringendo così le variabili di sessione ad agire come variabili di sessione. Ovviamente non riesco a trovare quel post ora ... Sembra comunque spaventoso. (Aggiornerò questa domanda con il link a questo post una volta trovata di nuovo)
  • Utilizza un archivio dati di terze parti come il servizio di archiviazione semplice di Amazon - sembra eccessivo
  • Memorizza nella cache i dati su un server che controllo e chiedi al client di scaricare nuovi dati da lì a ogni hit.

Ancora una volta, tutti i commenti su queste idee o eventuali nuovi sarebbero apprezzati.

AGGIORNAMENTO: Ho provato a utilizzare session_id () per utilizzare uno stato di sessione condiviso, ma non funziona. Ogni sessione mantiene il proprio "GlobalCache", qualche idea sul perché ?:

<*>

AGGIORNAMENTO: alcuni hanno suggerito di utilizzare memcached, che in realtà è un'ottima soluzione per alcuni, ma poiché non ho il controllo sull'ambiente del server finale non è un'opzione. L'idea è di avere uno script che le persone possano semplicemente FTP fino a un account di hosting condiviso che funzioni immediatamente.

AGGIORNAMENTO: qualcuno mi ha suggerito di creare la mia cartella cache con lo script, ma non avrei bisogno di creare una tale cartella all'interno di una cartella che aveva già le autorizzazioni di scrittura?

AGGIORNAMENTO, SOLUZIONE TROVATA: Ho finito per capire i problemi nel mio script di sessione globale e ho pubblicato la mia risposta in tal senso. Grazie per l'aiuto a tutti.

SESSION[$name]; session_id( $old_session ); return $value; } session_start(); test();

AGGIORNAMENTO: alcuni hanno suggerito di utilizzare memcached, che in realtà è un'ottima soluzione per alcuni, ma poiché non ho il controllo sull'ambiente del server finale non è un'opzione. L'idea è di avere uno script che le persone possano semplicemente FTP fino a un account di hosting condiviso che funzioni immediatamente.

AGGIORNAMENTO: qualcuno mi ha suggerito di creare la mia cartella cache con lo script, ma non avrei bisogno di creare una tale cartella all'interno di una cartella che aveva già le autorizzazioni di scrittura?

AGGIORNAMENTO, SOLUZIONE TROVATA: Ho finito per capire i problemi nel mio script di sessione globale e ho pubblicato la mia risposta in tal senso. Grazie per l'aiuto a tutti.

È stato utile?

Soluzione

Okay, ho capito come farlo emulando le variabili delle applicazioni in stile ASP usando uno stato di sessione condiviso / globale. Due modifiche chiave dal mio codice non funzionante nel relativo aggiornamento:

  1. Per cambiare lo stato della sessione, dobbiamo terminare la sessione corrente, passare a quella nuova, quindi avviarla. Ho incapsulato questo processo in switch_session ()

  2. Poiché stiamo cambiando gli ID di sessione, dobbiamo bufferizzare l'output della pagina usando ob_start () / ob_end_flush () in modo che il cookie della sessione non venga inviato troppo presto.

Segue il codice di lavoro completo (pulito anche!). Questo può essere facilmente testato caricando la pagina in un IE e una finestra di Firefox e ricaricandoli più volte per vedere salire i contatori:

<?php
function test() {

    // Do a regular session count
    print "session_id: " . session_id() . "<br>";
    if (!

Okay, ho capito come farlo emulando le variabili delle applicazioni in stile ASP usando uno stato di sessione condiviso / globale. Due modifiche chiave dal mio codice non funzionante nel relativo aggiornamento:

  1. Per cambiare lo stato della sessione, dobbiamo terminare la sessione corrente, passare a quella nuova, quindi avviarla. Ho incapsulato questo processo in switch_session ()

  2. Poiché stiamo cambiando gli ID di sessione, dobbiamo bufferizzare l'output della pagina usando ob_start () / ob_end_flush () in modo che il cookie della sessione non venga inviato troppo presto.

Segue il codice di lavoro completo (pulito anche!). Questo può essere facilmente testato caricando la pagina in un IE e una finestra di Firefox e ricaricandoli più volte per vedere salire i contatori:

<*>

SESSION['session_count'])

Okay, ho capito come farlo emulando le variabili delle applicazioni in stile ASP usando uno stato di sessione condiviso / globale. Due modifiche chiave dal mio codice non funzionante nel relativo aggiornamento:

  1. Per cambiare lo stato della sessione, dobbiamo terminare la sessione corrente, passare a quella nuova, quindi avviarla. Ho incapsulato questo processo in switch_session ()

  2. Poiché stiamo cambiando gli ID di sessione, dobbiamo bufferizzare l'output della pagina usando ob_start () / ob_end_flush () in modo che il cookie della sessione non venga inviato troppo presto.

Segue il codice di lavoro completo (pulito anche!). Questo può essere facilmente testato caricando la pagina in un IE e una finestra di Firefox e ricaricandoli più volte per vedere salire i contatori:

<*>

SESSION['session_count'] = 0;

Okay, ho capito come farlo emulando le variabili delle applicazioni in stile ASP usando uno stato di sessione condiviso / globale. Due modifiche chiave dal mio codice non funzionante nel relativo aggiornamento:

  1. Per cambiare lo stato della sessione, dobbiamo terminare la sessione corrente, passare a quella nuova, quindi avviarla. Ho incapsulato questo processo in switch_session ()

  2. Poiché stiamo cambiando gli ID di sessione, dobbiamo bufferizzare l'output della pagina usando ob_start () / ob_end_flush () in modo che il cookie della sessione non venga inviato troppo presto.

Segue il codice di lavoro completo (pulito anche!). Questo può essere facilmente testato caricando la pagina in un IE e una finestra di Firefox e ricaricandoli più volte per vedere salire i contatori:

<*>

SESSION['session_count']++; print "session count: " .

Okay, ho capito come farlo emulando le variabili delle applicazioni in stile ASP usando uno stato di sessione condiviso / globale. Due modifiche chiave dal mio codice non funzionante nel relativo aggiornamento:

  1. Per cambiare lo stato della sessione, dobbiamo terminare la sessione corrente, passare a quella nuova, quindi avviarla. Ho incapsulato questo processo in switch_session ()

  2. Poiché stiamo cambiando gli ID di sessione, dobbiamo bufferizzare l'output della pagina usando ob_start () / ob_end_flush () in modo che il cookie della sessione non venga inviato troppo presto.

Segue il codice di lavoro completo (pulito anche!). Questo può essere facilmente testato caricando la pagina in un IE e una finestra di Firefox e ricaricandoli più volte per vedere salire i contatori:

<*>

SESSION['session_count'] . "<br>"; // Do an application count $count = get_cache( 'count' ); if ( !$count ) $count = 0; $count++; print "application count: $count<br>"; set_cache('count', $count); } function set_cache( $name, $value ) { $old_session = switch_session("GlobalCache");

Okay, ho capito come farlo emulando le variabili delle applicazioni in stile ASP usando uno stato di sessione condiviso / globale. Due modifiche chiave dal mio codice non funzionante nel relativo aggiornamento:

  1. Per cambiare lo stato della sessione, dobbiamo terminare la sessione corrente, passare a quella nuova, quindi avviarla. Ho incapsulato questo processo in switch_session ()

  2. Poiché stiamo cambiando gli ID di sessione, dobbiamo bufferizzare l'output della pagina usando ob_start () / ob_end_flush () in modo che il cookie della sessione non venga inviato troppo presto.

Segue il codice di lavoro completo (pulito anche!). Questo può essere facilmente testato caricando la pagina in un IE e una finestra di Firefox e ricaricandoli più volte per vedere salire i contatori:

<*>

SESSION[$name] = $value; switch_session( $old_session ); } function get_cache( $name ) { $old_session = switch_session("GlobalCache"); $value =

Okay, ho capito come farlo emulando le variabili delle applicazioni in stile ASP usando uno stato di sessione condiviso / globale. Due modifiche chiave dal mio codice non funzionante nel relativo aggiornamento:

  1. Per cambiare lo stato della sessione, dobbiamo terminare la sessione corrente, passare a quella nuova, quindi avviarla. Ho incapsulato questo processo in switch_session ()

  2. Poiché stiamo cambiando gli ID di sessione, dobbiamo bufferizzare l'output della pagina usando ob_start () / ob_end_flush () in modo che il cookie della sessione non venga inviato troppo presto.

Segue il codice di lavoro completo (pulito anche!). Questo può essere facilmente testato caricando la pagina in un IE e una finestra di Firefox e ricaricandoli più volte per vedere salire i contatori:

<*>

SESSION[$name]; switch_session( $old_session ); return $value; } function switch_session( $session_id ) { // switch the session and return the original $old_id = session_id(); session_write_close(); session_id($session_id); session_start(); return $old_id; } ob_start(); session_start(); test(); ob_end_flush(); ?>

Altri suggerimenti

È possibile utilizzare le sessioni con una chiave di sessione fissa.

http://de.php.net/manual/en /function.session-id.php :

  

session_id ([id]) viene utilizzato per ottenere o impostare la sessione id per la sessione corrente.   Se viene specificato id, sostituirà l'ID sessione corrente. session_id () deve essere chiamato prima di session_start () a tale scopo.

Utilizza la tua directory cache nella directory dell'applicazione. Con ciò non devi lottare con varie impostazioni del server e / o PHP e ottenere la migliore portabilità.

Io voto per " memorizza nella cache i dati su un server che controllo e faccio in modo che il client scarichi nuovi dati da lì ad ogni hit. "

Tutti gli altri percorsi portano a una certa follia.

Guarda memcached per php- funziona davvero bene.

http://www.php.net/memcache

Ho usato la funzione aggiornata dall'autore come un modo per memorizzare nella cache un semplice risultato della query del database poiché mi aspettavo un carico elevato. Ho anche memorizzato un timestamp in modo da poter definire la frequenza con cui la pagina rinnoverà il risultato del database anziché prendere semplicemente il valore memorizzato nella cache.

Posso dirti che questa funzione di cache ha avuto prestazioni molto molto peggiori rispetto al passare direttamente al database ad ogni richiesta. In realtà ho ucciso il server. Una volta tornato a interrogare semplicemente il database, il server ha raggiunto la massima velocità e il carico piuttosto grande non è stato nemmeno notato.

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