9
votes

Comment puis-je stocker des données dans la mémoire RAM à l'aide de PHP?

Y a-t-il un moyen de stocker de petites données dans la mémoire RAM à l'aide de PHP afin que je puisse avoir accès aux données entre différentes sessions au lieu de la régénérer. Quelque chose de similaire à Memcached (je n'ai pas accès à Memcaathced). Ma solution actuelle est juste pour enregistrer les données dans le fichier.


2 commentaires

duplicaté possible de PHP - Variables latérales du serveur qui "vivent" pour jamais? - Il y a beaucoup de réponses qui sont applicables à votre question.


Pourquoi? Sur n'importe quel système d'exploitation moderne (où le stockage n'est pas sur un système de fichiers partagé), des données de fichier sont en cache en mémoire de toute façon.


4 Réponses :


4
votes

Je suppose que vous êtes sur un serveur partagé de quelque sorte.

memcached ou une autre solution de mise en cache est en effet le seul moyen de le faire.

sessions, la méthode la plus importante de persistance de données sur les pages PHP, fonctionnement basée sur des fichiers. Vous pouvez modifier le gestionnaire de session pour être basé sur la base de données, mais ce n'est pas basé sur la RAM, non plus.

Autant que je puisse le voir, sans changer votre système au niveau de la racine (par exemple pour installer Memcached ou stocker des fichiers de session sur un disque RAM), cela n'est pas possible.


0 commentaires

8
votes

Vous pouvez toujours utiliser une DB en mémoire pour enregistrer les données. Éventuellement surkill, cependant.


1 commentaires

Je suis surpris que personne d'autre a jeté votre réponse. J'ai eu du succès avec des tables de mémoire MySQL et ils sont vraiment rapides. RDB pourrait être surcharge pour des sessions, mais c'est une excellente option lorsque vous n'avez pas accès à Memcached ou / Dev /



14
votes

APC ?

Il fonctionne différent de Memcached; Dans Memcached, vous pouvez accéder aux données de différentes langues (C, Python, etc.), tandis que APC fonctionne uniquement pour PHP. P>

EDIT FORT> Êtes-vous sûr que APC est bien installé? Avez-vous ajouté extension = apc.so code> dans votre php.ini? Et pour redémarrer Apache (im en supposant que vous avez sur un serveur de lampe avec Apache2)? Qu'est-ce que vous phpinfo (); code> dit à propos de APC? P>

Ceci est un test simplement qui fonctionne parfaitement pour moi: P>

<?php
/*
 * page.php
 * Store the variable for 30 seconds,
 * see http://it.php.net/manual/en/function.apc-add.php
 * */
if(apc_add('foo', 'bar', 30)){
    header('Location: page2.php');
}else{
    die("Cant add foo to apc!");
}

<?php
/*
 * page2.php
 * */
echo 'foo is been set as: ' . apc_fetch('foo');


2 commentaires

Il ne peut pas installer memcached. Il est donc probable qu'il ne peut pas installer APC non plus


Vrai, mais beaucoup de sociétés permettent d'utiliser APC (avec certaines limitations) - nous devons lui demander.



3
votes

Créer un fichier dans / dev / shm et il sera maintenu en mémoire jusqu'à ce que la machine soit redémarrée. Cela peut être plus rapide ou plus rapide que d'utiliser n'importe quel ancien fichier, en fonction de votre motif d'utilisation.


2 commentaires

Il semble être sur un serveur partagé


@Pekka Eh bien, alors il est foutu ... J'espère que son fichier est mis en cache par le système d'exploitation.