dans asp.net si je déclare une variable (ou un objet) statique (ou si je fais un singleton), je peux le faire persister dans plusieurs sessions de plusieurs utilisateurs (il est enregistré dans un serveur em> Portée) Pour que je n'ai pas à l'initialiser à chaque demande. p>
Y a-t-il une telle fonctionnalité dans PHP? Merci p>
6 Réponses :
Vous pouvez le faire avec une extension PHP (écrite en C). P>
Mais si vous voulez l'écrire en PHP, non. La meilleure alternative consiste à écrire la variable à un fichier (fichier_put_contents ()) à la fin de chaque requête et ouvrez-le au début de chaque demande (fichier_get_contents ()). P>
Cette alternative ne fonctionnera pas pour des sites de volume élevés, car les processus feront en lecture / écrire en même temps et que le monde ira tout Blaaa-Wooo-Eee-Wohhh-Booom. P>
blaaa-wooo-eee-wohhh-biooom code>? I> C'est mauvais, non? 😉
Malheureusement, non. Le mot-clé Static code> de PHP est limité à l'instance de script en cours uniquement. p>
Pour persister les données sur les instances de script pour la même session, vous utiliseriez la Manipulation de la session forte> Caractéristiques. P>
Pour persister les données entre les sessions, vous devez utiliser quelque chose comme Memcache strong> , cependant, qui nécessite un travail de configuration supplémentaire sur le côté serveur. P>
Vous pouvez stocker des copies sérialisées d'un objet à l'intérieur de la session page suivante p>
IMO Cela partage la variable uniquement entre les pages de la même session: il n'est pas utile de partager entre plusieurs sessions ou plusieurs utilisateurs.
est une ancienne réponse, de nos jours, je recommanderais d'écrire un module, de nombreuses options telles que C ou C ++ pour écrire facilement un module partagé compilé.
Vous pouvez configurer APC et utiliser les fonctions APC_STORE et APC_FETCH. P>
Le lien est cassé.
qui n'existe pas dans PHP, cependant, vous pouvez sérialiser les données et la mettre dans un fichier sur votre disque dur ou dans / dev / shm /. Vous pouvez également utiliser MemCache. P>
Si vous mettez vos données dans / Dev / SHM / ou utilisez MEMCACHE, les données disparaîtront em> sur redémarrage. P>
symfony et autres cadres utilise Vous pouvez le télécharger à https://github.com/phpsocialnetwork/phpfastcache p> Voici un exemple avec fichier Caching: P> use Phpfastcache\Helper\Psr16Adapter;
$defaultDriver = 'Files';
$Psr16Adapter = new Psr16Adapter($defaultDriver);
// Setter action
if(!$Psr16Adapter->has('test-key')) {
$data = 'lorem ipsum';
$Psr16Adapter->set('test-key', 'lorem ipsum', 300); // kept in cache for 300 seconds (5 minutes)
}
// Getter action
else {
$data = $Psr16Adapter->get('test-key');
}
Est-ce un cas d'utilisation pour Redis?