![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 0 Dołączył: 7.05.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Próbuję napisać skrypt domowej galerii filmów. Na głównej stronie wyświetlane są trzy obrazy dla wybranej pozycji (okładka, fanart, miniaturka). Wszystkie trzy tworzone są za pomocą biblioteki GD2 w katalogu cache/ z wgranych przez użytkownika obrazów. Wgranie następuje poprzez ftp do katalogu export/. Następnie po uruchomieniu skryptu tworzy on wyżej wymienione trzy obrazy kolejno dla wszystkich pozycji. Niestety przy większej ilości pozycji skrypt przekracza limit wykonywania. Czy ma ktoś jakiś pomysł jak utworzyć miniaturki dla wszystkich pozycji w jakiś sprytny sposób. Wydaje mi się, że lepszym rozwiązaniem będzie tworzenie miniaturki dla aktualnie przeglądanej pozycji po prostu sprawdzenie czy miniaturka istnieje, jeśli tak to wyświetl jeśli nie to utwórz i wyświetl? Po pewnym czasie zostaną utworzone wszystkie. Ten post edytował Regss 16.12.2011, 20:42:08 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 0 Dołączył: 9.09.2011 Ostrzeżenie: (10%) ![]() ![]() |
Witam
Nie pogonisz w ten sposób dużej ilości plików, bo zawsze zabijesz serwer. Lepiej zmniejszaj je przy wgrywaniu na serwer a potem dopiero wyświetlaj miniaturki. Jak chcesz mogę Ci dać gotowca do zmniejszania zdjęć. Pozdrawiam |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 0 Dołączył: 7.05.2006 Ostrzeżenie: (0%) ![]() ![]() |
Problem w tym, że użytkownik korzystający ze skryptu wrzuca pliki przygotowane przez określony program poprzez ftp nie ma tu systemu uploadu. Następnie uruchamia skrypt i to skrypt ma za zadanie zrobić całą resztę czyli odnaleźć wgrane zdjęcia dodać do bazy danych i przekonwertować je do potrzebnych miniatur. Skrypt do zmniejszania zdjęć to nie problem, mam swój. Problem leży w rozwiązaniu kiedy konwertować te zdjęcia.
Ten post edytował Regss 16.12.2011, 21:45:59 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Może w nocy kiedy ruch jest stosunkowo niewielki? Cron i niech sobie po trochu robi (IMG:style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 0 Dołączył: 7.05.2006 Ostrzeżenie: (0%) ![]() ![]() |
Tylko skrypt ma służyć prostemu użytkownikowi który nie zna się na php. Musi być uniwersalny, działający na każdym serwerze. Konfiguracja skryptu ogranicza się do zmiany w pliku konfiguracyjnym danych do połączenia z bazą. Da się to zrobić z cron'em?
Wydaje mi się, że jednak najlepszą metodą będzie tworzenie miniatury pojedynczo przy przeglądaniu pojedynczej pozycji, ewentualnie dodanie pętli która utworzy np. 10 innych miniatur do losowych zdjęć oczywiście z warunkiem jeśli miniatury te nie istnieją. Ten post edytował Regss 16.12.2011, 22:04:29 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 0 Dołączył: 9.09.2011 Ostrzeżenie: (10%) ![]() ![]() |
Sorki nie doczytałem, no to jest rozwiązanie banalne.
1) po zmniejszeniu usuwaj plik z katalogu export 2) odświerz stronę po zmniejszeniu np 50 fotek (musisz zobaczyć ile pójdzie za jednym razem). $ID_UPDATE = 1; // Twój skrypt w jakiejś pętli if($ID_UPDATE == '500'){ print "<script type=\"text/javascript\" language=\"JavaScript\"> <!-- function reloading() { setTimeout(\"location.reload();\", 500); } window.onload = reloading; //--> </script>"; } $ID_UPDATE++; Sam to stosuje jak ma mega zadanie i sobie chodzi nawet kilka dni Ten post edytował einter-project 16.12.2011, 22:04:59 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 0 Dołączył: 7.05.2006 Ostrzeżenie: (0%) ![]() ![]() |
Nie chcę usuwać plików z export/ ponieważ użytkownik w każdej chwili będzie mógł dograć kolejne pliki i chcę zabezpieczyć się opcją w panelu admina która będzie odbudowywać miniaturki czyli usuwać i tworzyć wszystkie na nowo. Ale pomyślę nad tym...
Ten post edytował Regss 16.12.2011, 22:08:15 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 085 Pomógł: 231 Dołączył: 12.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
Jeśli faktycznie mają to być maksymalnie 3 pliki generowane przy odsłonie - narzut powinien być tak niewielki, że będzie niezauważalny. Jeśli będzie ich 30 powinno być mniej więcej podobnie - chyba że skrypt jest nieoptymalnie napisany, albo czas wykonywania skryptu jest wybitnie kuriozalny.
Gorzej jak kiedyś będziesz chciał to rozbudować. Wtedy najlepiej zaimplementować kolejkowanie elementów do zminiaturyzowania. Ile docelowo planujesz mieć miniatur? |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 195 Pomógł: 109 Dołączył: 3.11.2011 Ostrzeżenie: (10%) ![]() ![]() |
JA to trochę inaczej mam rozwiązane:
Użytkownik uploaduje plik z którego robię miniaturke i zapisuje ją binarnie do bazy danych do kolumny binary ,albo blob. Na oddzielnej stronie mam skrypt który odczytuje z bazy danych strumień i konwertuje je poprzez modyfikacje headera na zdjęcie inaczej mówiąc zamienia stronę html na jpg. Odczytuje tę stronę poprzez parametry w url. Nie mam problemu z wyświetlaniem miniaturek. Ten post edytował Niktoś 16.12.2011, 22:40:56 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 0 Dołączył: 7.05.2006 Ostrzeżenie: (0%) ![]() ![]() |
Jeśli chodzi o ilość miniatur to myśle że niektórzy użytkownicy będą posiadać ponad 1000 pozycji więc do wygenerowania jest 3000 miniatur.
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 590 Pomógł: 107 Dołączył: 25.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Ale przecież nie musisz wszystkich przetwarzać za każdym razem. Mało tego, zapewne nie chcesz.
Rozwiązaniem będzie porównywanie dat utworzenia danych obrazów i miniaturek (jeśli miniaturka jest nowsza, to nie trzeba jej generować, prawda?). Widzę tylko jeden problem: przez FTP można ustawić oryginalną datę pliku, w związku z czym możesz spodziewać się scenariusza: 1. user uploaduje obrazek (timestamp obrazka z zeszłego roku) 2. Ty robisz miniaturki (timestamp aktualny) 3. User wrzuca inny plik pod tą samą nazwą (timestamp nowszy od timestampu miniaturki) Tu może być problem... Choć osobiście sądzę, że to będą incydenty. Wtedy pozostaje rozwiązanie ze skasowaniem miniaturek i poczekaniem aż się wygenerują ponownie. |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 0 Dołączył: 7.05.2006 Ostrzeżenie: (0%) ![]() ![]() |
Oczywiście, że nie chcę dlatego przed próbą utworzenia będę sprawdzał czy istnieje miniaturka.
Wymyśliłem coś takiego, jak myślicie to będzie dobry sposób? Tylko mam jeden problem nie wiem jak zrobić aby przy każdym przeładowaniu skryptu pokazywało się ile jest już utworzonych miniatur. Zmienna $output nie chce się wyświetlić. Może zamiast header użyć javascriptu?
edit: Lepsze okazało się przekierowanie javascript ładnie pokazuje ile zostało do końca tworzenia miniatur. Pozostaje pytanie czy cały ten skrypt jest mądrym rozwiązaniem. Ten post edytował Regss 17.12.2011, 19:00:35 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 18.09.2025 - 17:25 |