Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Wykorzystanie wzorca iterator
Pjotrek80
post
Post #1





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 9.04.2013

Ostrzeżenie: (0%)
-----


Pracuję nad galerią zdjęć. Galeria posiada panel użytkownika do wprowadzania zdjęć oraz front (gdzie zdjęcia są wyświetlane).
Zastanawiam się czy potrzeba jest do tego baza danych.
W tym momencie do pobierania zdjęć wykorzystuje DirectoryIterator, który przeszukuje katalog ze zdjęciami.
Czy takie rozwiązanie jest:
1. Bezpieczne?
2. Czy jest bardziej eleganckie od pobierania nazw zdjęć z bazy danych?
3. Czy to jest dobry przykład do wykorzystania wzorca Iterator?
Go to the top of the page
+Quote Post
ptq
post
Post #2





Grupa: Zarejestrowani
Postów: 44
Pomógł: 2
Dołączył: 25.08.2009

Ostrzeżenie: (0%)
-----


Odczytywanie zawartości katalogu co uruchomienie skryptu nie jest zbyt optymalne, dodatkowo jesteś ograniczony co do ilości danych które możesz zapisać wraz ze zdjęciem.
Jeżeli nie chcesz wykorzystywać bazy danych, możesz ograniczyć się do pojedynczego pliku CSV z informacjami odnośnie zdjęć oraz trzymać w nim wiele dodatkowych informacji.

Odnośnie pytań:
1. To zależy od ciebie.
2. Olać elegancję, ma być wydajne i wygodne dla ciebie w przyszłości.
3. Jeżeli jest wydajne i nie ma możliwości zastąpić rozwiązania innym podobnym, to pewnie tak (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #3





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


1. Nie ma nic niebezpiecznego w używaniu iteratora (tzn. jeszcze zależy w jaki sposób go używasz, użytkownik ma jakiś wpływ na ścieżkę? Ale generalnie nie ma się czego bać).

2. Pobieranie nazw zdjęć z bazy danych ma tę zaletę, że możesz np. przypisać zdjęcie do użytkownika, dodawać różnego rodzaju rangi (ten user widzi, inny nie widzi). Wszystko generalnie zależy od tego czemu i jak ta galeria służy. Jeśli iterator spełnia swoje zadanie, to nie potrzebujesz angażować do tego bazy danych.

3. Dobry.
Go to the top of the page
+Quote Post
Pjotrek80
post
Post #4





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 9.04.2013

Ostrzeżenie: (0%)
-----


Cytat(ptq @ 27.06.2013, 22:41:51 ) *
Odczytywanie zawartości katalogu co uruchomienie skryptu nie jest zbyt optymalne, dodatkowo jesteś ograniczony co do ilości danych które możesz zapisać wraz ze zdjęciem.
Jeżeli nie chcesz wykorzystywać bazy danych, możesz ograniczyć się do pojedynczego pliku CSV z informacjami odnośnie zdjęć oraz trzymać w nim wiele dodatkowych informacji.

Odnośnie pytań:
1. To zależy od ciebie.
2. Olać elegancję, ma być wydajne i wygodne dla ciebie w przyszłości.
3. Jeżeli jest wydajne i nie ma możliwości zastąpić rozwiązania innym podobnym, to pewnie tak (IMG:style_emoticons/default/wink.gif)


Nie ma problemu - mogę skorzystać z bazy danych.

Czyli, jeżeli chodzi o wydajność to przeszukiwanie katalogu za pomocą DirectoryIterator jest mniej wydajne niż odczyt z bazy danych?

"...dodatkowo jesteś ograniczony co do ilości danych które możesz zapisać wraz ze zdjęciem." Nie rozumiem o jakie ograniczenie chodzi?

Cytat(b4rt3kk @ 27.06.2013, 22:44:55 ) *
1. Nie ma nic niebezpiecznego w używaniu iteratora (tzn. jeszcze zależy w jaki sposób go używasz, użytkownik ma jakiś wpływ na ścieżkę? Ale generalnie nie ma się czego bać).

2. Pobieranie nazw zdjęć z bazy danych ma tę zaletę, że możesz np. przypisać zdjęcie do użytkownika, dodawać różnego rodzaju rangi (ten user widzi, inny nie widzi). Wszystko generalnie zależy od tego czemu i jak ta galeria służy. Jeśli iterator spełnia swoje zadanie, to nie potrzebujesz angażować do tego bazy danych.

3. Dobry.

Nie - ścieżka jest zapisana w stałej.
Czyli rozwiązanie z iteratorem jest lepsze? tzn bardziej wydajne np?
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #5





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Szczerze mówiąc nie mam pojęcia jak oba te rozwiązania różnią się wydajnością. Możesz to sprawdzić samemu.

  1. $time = microtime();
  2. // tutaj wstaw iterator bądź zapytanie sql
  3. $delay = microtime() - $time;
  4. echo $delay * 1000;


Porównaj wartość milisekund przy użyciu zapytania do bazy i przy użyciu iteratora. Które zwróci mniejszą liczbę jest szybsze, a co za tym idzie bardziej korzystne względem czasu wykonania.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 12.10.2025 - 18:50