Kategorie
WordPress

W oczekiwaniu na 3.6 – sesja użytkownika oraz blokowanie wpisów

W następnej wersji możemy spodziewać się wielu zmian. Jedną z nich jest aktywne powiadomienie użytkownika o zakończonej sesji. Aktualnie jest tak, że jak użytkownikowi skończy sesja, to dowiaduje się o tym po podjętej akcji, co często powoduje frustracje.

Wygaśnięcie sesji użytkownika.

Nadal trwają dyskusje jak to aktywne okno ma się zachować, czy pozwolić na zakończenie operacji, czy wygaszać ekran pod spodem. Pewnie ostateczny kształt poznamy dopiero prze wersjach RC.

Jak to wygląda dziś możesz łatwo sprawdzić. Jak? Usuwając cookie sesyjne i klikając dalej po panelu administratora. Tak samo można przetestować wersje z repozytorium.

Kategorie
Bez kategorii

sesje PHP w memcache’u

Pewien dość mocno obciążony serwer www (apache2) strasznie dużo zapisywał w katalogu sesji PHP. Na tyle dużo, że zaczeło to być problemem, jeszcze nie krytycznym, ale już zauważalnym.

Jednym z możliwych rozwiązań jest przeniesienie sesji do bazy danych, ale ze względu na specyfikę danych sesyjnych nie jest to szczególnie dobre rozwiązanie przy tej wielkości serwisu, a dodatkowo serwis korzysta z postgresa, więc wrzucanie w niego sesji jest jeszcze mniej polecane.

Rozwiązaniem zastosowanym, a które szczerze polecam jest memcache.

Instalacja jest banalnie prosta. Najpierw odpowiednie moduły na serwerze: (dla debianowaych):

sudo apt-get install memcached php5-memcache

Sprawdzamy czy serwer memcache wstał

netstat -ntlp | grep mem

oraz czy w używany php jest załadowany moduł memcache.

W konfiguracji php należy zmienić sposób przechowywania sesji oraz ustawić dane dostępowe do memchache’a:

;session.save_handler = files
session.save_handler = memcache
session.save_path="tcp://127.0.0.1:11211?persistent=1&weight=1&timeout=1&retry_interval=15"

Teoretycznie powinno zadziałać.

Niestety u mnie wystąpił następujący błąd:

Fatal error: session_start() [function.session-start]: Failed to initialize storage module: memcache (path: [...]/session) in /var/virtuals/[...].php on line 41

Który związany był z ustawianiem przez plik konfiguracyjny serwisu następującej wartości

ini_set("session.save_path",SESSION);

i dopiero po jej usunięciu wszystko zaczęło śmigać tak jak powinno.