ahold
8.07.2009, 08:41:36
Witajcie,
Wiem że to trochę głupia sprawa ale muszę wynenerować systystkę użycia kilku parametrów.
Zrobimy to w GD. Będzie dynamicznie generowane.
Moje pytanie brzmi, czy można jakoś "cachować obrazek z GD" np do 10 seknd ?
Tak aby 1000 requestów otwarcia obrazka z php gd, nie powodowalo 1000 wygenerowań go na nowo, 1000 pobrań z bazy, i 1000 przeliczeń statystyk.
Zapisanie na dysk twardy odpada, to by była głupota najwyższego szczebla. Przy każdym requeście sprawdzać date modyfikacji, czy mineło 10 sekund / tak - skasuj plik, wygeneruj nowy / nie - wyswitl plik
(chyba za dużo roboty, poza tym w krótkiej linii doprowadzi do zajechania dysku zapisem)
maly_swd
8.07.2009, 08:52:17
a. Glupota jest trzymac obrazek w bazie...
b. obciazenie bazy wzrasta
c. tak samo "jezdzi po dysku", a czasem bardziej...
A teraz odpowiedzi na Twoje pytania
Zrobimy to w GD. Będzie dynamicznie generowane.
Moje pytanie brzmi, czy można jakoś "cachować obrazek z GD" np do 10 seknd ?
-tak, mozna
Tak aby 1000 requestów otwarcia obrazka z php gd, nie powodowalo 1000 wygenerowań go na nowo, 1000 pobrań z bazy, i 1000 przeliczeń statystyk.
-dobry pomysl...
Zapisanie na dysk twardy odpada, to by była głupota najwyższego szczebla. Przy każdym requeście sprawdzać date modyfikacji, czy mineło 10 sekund / tak - skasuj plik, wygeneruj nowy / nie - wyswitl plik
-odczyt z dysku obrazka i sprawdzenie modyfikacji pliku to "pikus" z przemieleniem bazy danych. Inna sprawa ze takie operacje sa cachowane przez system
(chyba za dużo roboty, poza tym w krótkiej linii doprowadzi do zajechania dysku zapisem)
-za duzo roboty dla kogo? Dla serwera to milisekundy... A dysk i tak jest zajechany przez baze
Crozin
8.07.2009, 08:56:03
Że niby zapis co 10-15 sek obraza miałby zajechać dysk? O odczycie nie wspominam, bo przy każdym żądaniu Twój serwer odczytuje kilkadziesiąt-kilkaset plików.
Ewentualnie możesz trzymać to w pamięci (
memcache" title="Zobacz w manualu PHP" target="_manual)
ahold
8.07.2009, 09:04:22
Odczyt nie ma żadnego wpływu na pracę serwera który ma xx gb ramu, takie coś jest cachowane na poziomie systemu operacyjnego / kontrolera raid !
Nie powiedziałem że równolegle jest xxxx takich plików ?
Jeden może być użyty 2x na godzine. Inny 1000 na kilka sekund.
Zapis na dysk - myślałem czy php nie ma gotowe funkcji typu "ram drive" $obrazek->save_to_ram_drive;
I porównywac z ramdrive, pomijając dysk twardy.
Jeżeli nie, to faktycznie zapisze na dysk, porównamy date pliku, tylko żeby znowu nie tworzyc tymczasowej tabeli z datami. Tylko już faktycznie, uprzeć się i zrobić to na pliku.
if < 10 sekund - header png i fopen obrazek .png
else
wygeneruj
zapisz
header png
fopen
obrazek.png
Czy zatwierdzacie taką metodę ?
maly_swd
8.07.2009, 09:34:46
Zainteresuj sie tym co kolega Crozin napisal.. haslo mamcache.
Jak tak bardzo chcesz podniesc wydajnosc to na "boga" zrezygnuj z trzymania obrazkow w bazie:)
ahold
8.07.2009, 09:41:48
JAKICH OBRAZKÓW W BAZIE

!!!!!!!!!!!!
z bazy pobierane są dane do wygenerowania wykresu :/
xxx rekordów, żeby wygenerowac ładną statystykę.
Memcached - zakochałem się od pierwszego wejżenia.
Już implementujemy.
Nawet ma funckję "expire"

Chyba z miłości dorzucę dla niego osobną maszynę
maly_swd
8.07.2009, 10:42:30
ehhh zle doczytane... wyszlo z tego ze obrazki sa w bazie i je generujsze przez gd (np dodajesz cos do nich)...
.. aby 1000 requestów otwarcia obrazka z php gd, nie powodowalo 1000 wygenerowań go na nowo, 1000 pobrań z bazy...
a jesli to statystyki to moze latwiej bedzie generowac wykres po stronie przegladarki? jakims JS? z xmla?
albo np
http://code.google.com/intl/pl-PL/apis/chart/types.html
ahold
8.07.2009, 17:00:27
Przepraszam, faktycznie źle to napisałem.
Proszę wybacz mi
maly_swd jeżeli mój ton wypowiedzi odebrałeś negatywnie.
Memcache okazało się idealnym rozwiązaniem.
Nie wiedzialem tylko jak zapisać obiekt obrazka, więc użyłem drobnego triku:
<?php
ImagePNG($graph);
?>
Potem wywołanie z memcacha + header.
Problem uważam za rozwiązany.
maly_swd
8.07.2009, 18:21:33
Ahold -> no przestan:) za takie cos sie obrazac? Tylko napisalem ze nie doczytalem do konca i ze zrozumieniem:)
Luzik.. powodzenia w tworzeniu..
pozdr
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.