Staram się monitorować frazy z których czytelnicy wchodzą na bloga oraz opisywać problemy, które ich tutaj sprowadziły. Ostatnio zauważyłem, że ktoś szukał frazy Używanie zmiennych między skryptami. Podejrzewam, że chodziło o przenoszenie zmiennych między skryptami wywoływanymi przez różnych użytkowników, na różnych komputerach.
W takim wypadku sesje odpadają, ponieważ są ważne przez ograniczony czas i ograniczają się do jednego komputera. Z podobnego powodu odpadają też ciasteczka. Wprawdzie czas życia może być dużo dłuższy, lecz w niczym to nie pomaga.
W tym przypadku wielu myśli o bazie danych. Jednak nigdy nie wiadomo, jakie informacje będą trzymane, a to może rodzić pewne problemy. Można stworzyć tabelę w której będą przechowywane informacje takie jak nazwa zmiennej oraz wartość.
Może być tak, że będziemy potrzebować przechować kilka zmiennych o tej samej nazwie (zawsze warto rozważać sytuacje ekstremalne), a wtedy będzie problem z wybraniem konkretnego rekordu. W takim przypadku trzeba będzie dołożyć pole, po którym będziemy rozróżniać, której wersji tej samej zmiennej potrzebujemy w danej chwili.
Dodatkowo przy przenoszeniu zmiennych między skryptami może być również potrzeba dokładania kolejnych warunków lub przechowywanych większej ilości informacji. To będzie się wiązać z rozbudową bazy, która nie jest niczym dobrym. W momencie, kiedy będziemy chcieli przywrócić backup bazy danych z przed jakiegoś czasu, może się okazać, że zawiera przestarzałą wersję bazy i system zacznie się sypać.
Uważam, że w takim przypadku najlepszym rozwiązaniem jest keszowanie zmiennych w specjalnym katalogu. Zmienne będą zapisywane w plikach oznaczonych pewnymi identyfikatorami lub konkretnymi nazwami. W tych plikach będą przechowywane dane z PHP w formie tekstowej.
Dzięki temu nie będziemy mieć problemu z przechowywaniem w plikach dowolnych typów danych – od liczb po obiekty. W tym celu wykorzystamy funkcje, które opisałem w artykule „Keszowanie stron WWW„.
Na samym początku tworzymy katalog w którym będą trzymane pliki z danymi i nadajemy mu wszystkie prawa (777). Następnie zapisujemy funkcje z tamtego artykułu w dowolnym pliku i importujemy go w odpowiednim momencie. Później już pozostaje tylko wywoływanie odpowiednich funkcji.
Dokładny opis zarówno funkcji, jak i sposób używania ich, opisałem w artykule dotyczącym keszowania. Uważam, że tamte funkcje są banalne w użyciu i każdy powinien sobie z nimi poradzić.