Nie da się jednoznacznie odwzorować mechanizmu sesji (przynajmniej w prosty sposób ) w PHP, ale można przeanalizować do czego tak naprawdę wykorzystywane są sesje, czy służą do identyfikacji użytkowników i przechowywaniu przypisanym im wartości, czy tylko i wyłącznie do utrzymywania informacji przekazywanych między skryptami. Innymi słowy czy kilka użytkowników może "jednocześnie" wykonać skrypt, oraz czy wartości zmiennych sesyjnych faktycznie są unikalne i wymagają przechowania aż do końca sesji. Jeśli zależy nam na identyfikacji usera i ewentualnym przechowaniu przypisanych mu informacji sprawdziłbym czy środowisko w którym uruchamiany jest skrypt (skoro nie jest nim przeglądarka) obsługuje cookies. Magazyn danych oparłbym na bazie tekstowej, a funkcje dotyczące sesji "zamieniłbym" odpowiednikami:
session_start();
- otwiera magazyn
- sprawdza czy istnieje określone COOKIE (które zawiera ID usera)
- jeśli nie generuje unikalny ID dla "sesji" i zapisuje w COOKIE
- tworzymy tablicę wielowymiarową której kluczem pierwszego elementu jest ID, a jego wartością tablica niższego rzędu, do której będziemy wrzucać zmienne sesji.
- jeśli w bazie istnieje podane ID wczytuje zmienne (o tym potem) lub "zeruje" je
- jeśli nie, dodaje nowy wpis do bazy stosując JSON encode na utworzoną tablicę
- zwraca ID (chyba, że stworzymy taką zmienną o zasięgu globalnym, wtedy może zwracać boola)
session_destroy();
- sprawdza czy istnieje COOKIE
- jeśli tak usuwa cały wpis dodany do bazy związany z ID (przegląda wszystkie wpisy i usuwa konkretny)
- usuwa COOKIE
- zamyka magazyn
- zwraca boola
$_SESSION[" "] =
- pobiera ID z COOKIE
- wczytuje cały wpis z bazy dotyczący ID
- JSON decode
- sprawdza czy istnieje element o podanej nazwie
- jeśli tak, zmienia jego wartość
- jeśli nie, dodaje element wewnątrz tablicy o kluczy takim jak nazwa zmiennej i określonej dla niej wartości
- JSON encode
- nadpisuje wpis
$_SESSION[" "];
- pobiera ID z COOKIE
- wczytuje cały wpis z bazy dotyczący ID
- JSON decode
- zwraca wartość dla danej nazwy zmiennej
Jeśli COOKIE nie jest obsługiwane można pokombinować ze zmiennymi globalnymi, lub jeśli skrypt będzie uruchamiany np. z konsoli można "symulować" COOKIE tworząc mały plik tekstowy o określonej nazwie zawierający ID.
W celu przyspieszenia wykonywania operacji w bazie można ID inkrementować w jakiś sposób i wykorzystać jeden z algorytmów szybkiego wyszukiwania. Dodatkowo taki skrypt przechowuje sesję do momentu wykonania session_destroy(), i nie znika przy "zamknięciu przeglądarki".
Tak bym to widział

, ale wszystko zależy od tego jak i do czego skrypt wykorzustuje sesje