Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Bez użycia bazy => wszystko w pamięci [plan lekcji]
Forum PHP.pl > Forum > PHP
Blackhole
Witam.
Jestem w zaawansowanej fazie tworzenia narzędzia ułatwiającego układanie planu lekcji dla szkoły. Na początku pomyślałem, iż baza danych nie będzie bardzo potrzebna i do konfiguracji używam plików. To nie stwarza problemów.
Wykorzystałem trochę OOP i każdy nauczyciel jest instancją klasy "nauczyciel". Podobnie jest z salami i grupami/klasami.
Plan lekcji można definiować w 5-minutowych jednostkach czasowych. Gdy dodam nauczycielowi jakieś zajęcia np. "10:00-10:45 - Matematyka z Klasą I", to tworzy się 9 wpisów: dla każdych 5 minut w tych 45 minutach. To powoduje, iż teraz dla stworzonego przykładowego planu mam ponad 3800 wpisów 5-minutowych.
Problem pojawia się, gdy przetwarzam dane zapisane w sesji: np. do wyświetlenia statystyki nauczycieli, dziennego planu dla nauczyciela, itp. Wolno to wszystko chodzi. ohno-smiley.gif
Np. by pokazać plan dzienny dla nauczyciela przelatuję w pętli te wszystkie 5-minutówki, by wyszukać w nich te dotyczącego wybranego nauczyciela i odnoszące się do konkretnego dnia. Ze znalezionych 5-minutówek składam sobie tabelkę prezentującą dzienny plan.
Nie wiem zbytnio, jak to przyspieszyć. Pomyślałem, że stworzyć mogę indeksy na tych 5-minutówkach, by szybciej mieć dostęp do interesujących mnie zakresów, ale czy to ma sens?
Proszę o rady... (słowa krytyki też przyjmę)
Turson
Tabela z 3800 rekordami to byłby pikuś wink.gif Zapchałeś sesję.
nospor
Tak z czystej ciekawosci: a gdzie ty te dane przechowujesz? Bo chyba nie trzymasz tego ciągle w sesji...
No i czemu tworzysz te 5-cio minutówki? Czemu to ma sluzyc?
No i czemu jak czlowiek nie zrobiles tego na bazie?
Blackhole
nospor, właśnie ciągle w sesji trzymam. Nie wiedziałem, że będą z tym problemy. Na bazie nie zrobiłem, bo nie wydawała mi się potrzebna. 5-minutówki tworzę, bo myślałem, że łatwiej później będzie operować na tych jednostkach czasu.
Da się jakoś "odetkać" tę sesję bez radykalnych zmian całości?
nospor
Przeciez sesja to magazyn tymczasowy.... Jakim cudem piszesz aplikacje opierając sie tylko na sesji? Ktos wyłączy kompa, padnie prad, padnie sprzęt, cokolwiek sie stanie a ty natychmiast tracisz te dane...
Na dodatek sesja dotyczy tylko i wylacznie danego uzytkownika... Nie jestes w stanie na roznych kompach operowac na tych samych danych.

Podsumowując: sesja to poroniony pomysl. Zrob to jeszcze raz normalnie jak bozia przykazała, wywal te 5-cio minutowki i ciesz sie zyciem wink.gif
Blackhole
No to se naważyłem piwa sad.gif Zamiast wcześniej zapytać o radę ohno-smiley.gif
Dzięki za zainteresowanie tematem.
Pyton_000
Hehe tak to już bywa że robi się coś bez przemyślenia, poszukania rady wink.gif A potem człowiek się męczy z potworami haha.gif
Blackhole
Zmieniam więc, by używać bazy. Nasunęło mi się pytanie...
Mam w PHP klasę "nauczyciel", a w bazie listę nauczycieli. Dobrze będzie, jak do bazy odwołam się po tę listę tylko raz, by utworzyć w sesji ARRAY z obiektami nauczycieli i potem już korzystać z tego ARRAY-a? Nie miałoby chyba sensu każdorazowe inicjowanie obiektów nauczycieli przy każdym odświeżeniu strony?
nospor
A jak ktos doda nauczyciela? Musisz miec mechanizm odswiezania swojej sesji gdy ktos doda, usunie, zmieni.
Poza tym wydaje mi sie, ze ździebko naduzywasz tej sesji.
Blackhole
Oczywiście będzie odświeżenie po dodaniu nauczyciela.
Jakbyś więc Ty zrobił, aby sesja nie była nadużywana? Jak pisałem... nie wiem, czy jest sens za każdym odświeżeniem strony odczytywać nauczycieli z bazy i tworzyć ARRAY z obiektami klasy "nauczyciel".
nospor
A po co w ogole ty to robisz za kazdym razem? Po grzyba po kazdym odswiezeniu strony znac ci liste nauczycieli?
Ja rozumiem, ze ta lista moze byc wymagana na stronie z listą nauczycieli, z planem lekcji wszystkich nauczycieli, ale tak, na kazdej innej stronie lista nauczycieli jest ci do niczego raczej nie potrzebna
Kalinowcyk
Od siebie dodam, że większość stron przy każdym odświeżeniu odczytuje sporo danych z bazy danych i nie ma w tym nic dziwnego. Nie bardzo rozumiem, dlaczego tak bardzo chcesz tego uniknąć, szczególnie, że ilość pobieranych przez Ciebie danych naprawdę nie jest zbyt duża.

Sesja przewidziana jest do przechowywania danych o konkretnym użytkowniku typu jego login (jeśli jest zalogowany) itp. Na pewno nie specjalnie nadaje się do przechowywania całych tabel.
BenekeX2
dokładnie sesja się do tego nie nadaje.
Bazy danych są przeznaczone do tego aby przechowywać w nich dane i wydaje mi się że są dużo bardziej wygodne w użyciu niż pliki i szybsze. O sesji już nie wspomne.

Blackhole
Już prawie przepisałem na bazę danych smile.gif Śmiga "jak szalone" smile.gif Dzięki!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.