2011-03-03 14 views
5

Mi stavo chiedendo, c'è un modo per avere una sorta di variabile che sarebbe 'statica' nel senso che sarebbe la stessa per tutti gli utenti in PHP? So che esiste la possibilità di avere una variabile statica all'interno di una funzione in php ma non è quello che voglio.La stessa variabile per tutti i php?

Vorrei che tutti condividessero un oggetto che avrei manipolato a seconda della richiesta dell'utente. Oppure, un altro esempio simile a quello che voglio è, c'è un modo per mantenere una variabile che conta il numero di visitatori (senza usare alcun tipo di manipolazione di file o database). Quella variabile sarebbe incrementata ogni volta che un utente entra nella mia pagina.

Cheers!

+5

è necessario memorizzare da qualche parte se non un db, poi un file flat –

+0

un'idea terribile del giorno: fare tutti gli utenti hanno la stessa $ _SESSION ... dai loro tutti lo stesso ID di sessione. – Guttsy

+2

^^^ lol, è terribile. –

risposta

4

Senza utilizzare un file o un database, credo che si possa fare ciò usando qualcosa come APC.

$var = 1; 
$key = 'myVariable'; 
apc_store($key, $var); 
echo apc_fetch($key); // 1 

Se si vuole incrementarlo, è possibile utilizzare apc_inc()

echo apc_inc($key); // 2 

Tuttavia, non saranno conservati questa variabile se la cache viene cancellata (il che accade quando si riempie o il server è rinnovate).

0

Penso che quello che stai cercando sia chiamato una variabile globale.

In riferimento ai contatori di pagine vista, di solito lo facciamo con le variabili all'interno dei file. Here's a good example.

Si potrebbe anche farlo tramite database, ma se non si dispone già di un database, sembra eccessivo solo per ottenere uno per un contatore di visite.

+0

SQLite non è affatto eccessivo, è fondamentalmente un database in un file flat, probabilmente l'opzione migliore (oltre a un file flat). –

1

No. In alcune (la maggior parte?) Configurazioni, ogni richiesta viene gestita in processi separati che non condividono nemmeno lo spazio degli indirizzi l'uno con l'altro. È necessario un database o un altro meccanismo di archiviazione persistente.

0

Suppongo che potresti utilizzare una variabile del server Apache. Presumibilmente i server non Apache avrebbero qualcosa di simile.

Il vars può essere impostato/ottenuto con apache_setenv/apache_getenv. La domanda è se questi si propagheranno su tutti i bambini di apache, o solo che sullo script PHP è in esecuzione.

Ovviamente, poiché sono impostati in modo dinamico, si perderebbero i valori ogni volta che Apache viene ripristinato.

3

Controlla i semafori e la memoria condivisa e come funzionano in PHP. Con una variabile di memoria condivisa, diversi processi (utenti) possono utilizzare lo stesso spazio di memoria e utilizzare le stesse variabili. Ecco un link alla documentazione di PHP per iniziare:

http://www.php.net/manual/en/function.shm-get-var.php

Problemi correlati