Po co zapisywać chwilowe dane na serwerze WWW? Przecież okres ważności przesyłanych przez ESP zmiennych wynosi kilka kilkanaście sekund. Potem ich wartość jest bez znaczenia jeśli tylko nie chcemy robić jakiś historycznych zestawień np. wykresów. Powód jest prozaiczny. Serwer WWW nie przechowuje żadnych danych z przeglądarki. A jeśli nawet to są one dostępne jedynie w momencie przetwarzania strony (HTML czy PHP). Nawet ten sam użytkownik na tej samej stronie po jej odświeżeniu dostaje całkiem nowy zestaw zmiennych bo poprzednie zostały już skasowane. Tym bardziej nie są one dostępne dla różnych użytkowników w różnym czasie.
Oczywiście serwery WWW zapisują dane i to nawet duże ich ilości. Mogą to robić na trzy sposoby. Zapisać dane do pliku, do bazy danych lub na komputer użytkownika. Każdy jednak z tych sposobów tak czy inaczej ma koniec na twardym dysku i stamtąd też trzeba te dane pobrać do wyświetlenia w kolejnej sesji. O tym że jest to dość wolna procedura nie trzeba nawet mówić. Ograniczeniem są pewnie też restrykcje właścicieli hostingu patrzących złym okiem na zbyt częste procedury zapis/odczyt na dysk generowane przez (zwłaszcza darmowych) użytkowników ich serwerów.
Trochę łatwiej jest w przypadku stosowania baz danych do przechowywania zmiennych naszych programów. Ale baza danych (np MySQL) to osobny moduł, który trzeba sobie zainstalować i umieć obsłużyć z poziomu PHP. Jest szybsza w dostępie niż zapis pliku na dysku ale też potrzebuje czasu. W darmowym hostingu mogę stworzyć bazę danych databases.000webhost.com o pojemności nawet do 1 GB!. Co z tego gdy ja potrzebuję zapamiętać raptem kilkanaście bajtów.
Zapisywanie danych sesji na komputerze użytkownika (słynne ciasteczka) w naszym przypadku nie wchodzi w grę z przyczyn oczywistych. Więc co mamy problem?
Zastosować by można procedury PHP pozwalające na przechowywanie niewielkich ilości danych w pamięci RAM serwera. Te procedury to apcu (lub apc) pozwalające na krótko zachować nieliczne dane. Można by gdyby mój serwer hostingowy na to pozwalał. Niestety ta funkcja nie jest dostępna w 000webhost.com. Pozostaje więc zapamiętać zmienne w pliku lub w bazie danych.
Zacznijmy od bazy, gdyż wydaje się bardziej odpowiednia do tego typu działań. Na serwerze zainstalowana jest MariaDB - w pełni darmowa wersja MySQL. Wiem, wiem baza danych dla takiej ilości danych to mikroskop do orzechów ale czy mam inny wybór?
Po stworzeniu bazy danych (a mogę mieć dwie) stworzyłem tablicę (tych mogę mieć 100) test z dwoma przykładowymi wierszami "nazwa" i "dana". Nazwa jest typu tekstowego zaś dana liczbowego int.
teraz mogę już próbować co do tej bazy zapisać i coś z niej odczytać
Stworzyłem trzy pliki
- jeden.htm - wpisanie nowych wartości i wysłanie je poprzez GET do dwa.php
- dwa.php - odczyt danych z GET , wyświetlenie i zapis ich do rekordu bazy danych
- trzy.php - odczyt danych z bazy, wyświetlenie i skasowanie wszystkich danych z bazy
A na razie niech działa nasz ulubiony ciąg dalszy...
Brak komentarzy:
Prześlij komentarz