Utilisation basique

Exemple #1 Exemple avec l'extension Memcache

Dans cet exemple, un objet est sauvegardé dans le cache et ensuite, affiché. Les objets ainsi que les autres types non-scalaires sont sérialisés avant d'être sauvegardé ; il est donc impossible d'y stocker des ressources (i.e. identifiant de connexion et autres) dans le cache.

<?php

$memcache
= new Memcache;
$memcache->connect('localhost', 11211) or die ("Connexion impossible");

$version = $memcache->getVersion();
echo
"Version du serveur : ".$version."<br/>\n";

$tmp_object = new stdClass;
$tmp_object->str_attr = 'test';
$tmp_object->int_attr = 123;

$memcache->set('key', $tmp_object, false, 10) or die ("Echec de la sauvegarde des données sur le serveur");
echo
"Les données ont été stockées dans le cache (les données expireront dans 10 secondes)<br/>\n";

$get_result = $memcache->get('key');
echo
"Données depuis le cache :<br/>\n";

var_dump($get_result);

?>

Exemple #2 Utilisation de memcache comme gestionnaire de session

<?php

$session_save_path
= "tcp://$host:$port?persistent=1&weight=2&timeout=2&retry_interval=10, ,tcp://$host:$port ";
ini_set('session.save_handler', 'memcache');
ini_set('session.save_path', $session_save_path);

?>

add a note

User Contributed Notes 2 notes

up
5
atesin > gmail
5 years ago
memcached is great, is lightning fast, very versatile and useful, scalable, and is a must have for many projectsbut if you only want speed to minimize session file blocking there is also a good alternative, tmpfshttps://eddmann.com/posts/storing-php-sessions-file-caches-in-memory-using-tmpfs/maybe if you are in debian you already had session directory in tmp (mounted as tmpfs), but beware of daily cleaning process that can mess up your sessionsyou can use this trick if you are in centos/other (like me) or even if you are in debian but want to get ride of /tmp cleaning taski realized in my system /run is also mounted as tmpfs, so i shut php-fpm down, moved my php session dir to /tmp/, reconfigure php and start again... (you can adapt it to your situation)  systemctl stop php-fpm  cp -a /var/lib/php/session /tmp/php-session  vim /etc/php-fpm-d/www.conf  ------  php_value[session.save_path] = /run/php-session  ------  systemctl start php-fpmthe only drawback is tmpfs is VOLATILE, just like memcached (data is lost on unmount/shutdown/power fail), to  circumvent this risk i wrote another service that restores/backup php session dir before/after php starts/stops... (UNTESTED!)  vim /etc/systemd/system/php-session-backup.service  ------  # basic persistence for tmpfs php sessions    [Unit]  Description=PHP tmpfs sessions backup/restore on shutdown/boot  Before=php-fpm.service    [Service]  Type=oneshot  RemainAfterExit=true  ExecStart=rm -fr /run/php-session  ExecStart=cp -fa /var/lib/php/session /run/php-session  ExecStop=rm -fr /var/lib/php/session  ExecStop=cp -fa /run/php-session /var/lib/php/session    [Install]  WantedBy=multi-user.target  ------  systemctl enable php-session-backupyou can also complement this with a daily backup task in case of system crash so you will lose just one day  crontab -e  ------  0 4 * * * rm -fr /var/lib/php/session;cp -fa /run/php-session /var/lib/php/session  ------this is very rough though, you can better use inotify + rsync, could take some ideas from herehttps://blog.jmdawson.co.uk/persistent-ramdisk-on-debain-ubuntu/
up
-1
atesin > gmail
5 years ago
moderator please merge these postsan errata to my comment done on 2020-07-28 01:05 about tmpfs session dir...the tmpfs directory i used to install session files is "/run" not "/tmp"...  as /tmp is auto (or manual) deleted sometimes
To Top