![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 177 Pomógł: 0 Dołączył: 8.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
mam tabelę w której pierwsza kolumna to identyfikatory. w jednym z folderów są pliki o nazwach takich jak te identyfikatory, z tym że nie dla każdego wpisu w bazie jest taki plik. chciałbym terez wybierać losowo 3 wpisy dla których istnieje ten plik, na razie przyszło mi do głowy coś takiego (kod na razie tylko teoretyczny, nie sprawdzałem go)
tutaj najpierw wybieram wszystkie rekordy i potem dopiero sprawdzam po kolei czy istnieje plik. czy da się to zrobić jakoś prościej tak żeby nie wykonywać tylu pętli? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat żeby nie wykonywać tylu pętli? petle wykonujesz tylko jedna anie "tyle" ![]() No niestety skoro masz taka strukture, ze to co w bazie nie zgadza sie z tym co w katalogu no to nie ma bata, musisz robic tak jak robisz. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 712 Pomógł: 23 Dołączył: 27.10.2003 Skąd: z kontowni Ostrzeżenie: (0%) ![]() ![]() |
A może zrobić jedną tablicę z plikami, drugą z danymi z bazy i znaleźć część wspólną?
-------------------- "Coś się kończy, coś się zaczyna." Andrzej Sapkowski
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 177 Pomógł: 0 Dołączył: 8.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
A może zrobić jedną tablicę z plikami, drugą z danymi z bazy i znaleźć część wspólną? rozumiem że chodzi ci o jedną tablicę z indeksem a drugą z indeksem, nazwą i opisem? w tej chwili wpisów w tabeli jest ok 1800 a fotek ok 1300 więc wydaje mi się że takie rozwiązanie będzie mniej efektywne od mojego no i myślę że to będzie bardziej skomplikowane. mój skrypt nie musi zawsze przerabiać tyle danych i w najlepszym przypadku może zakończyć działanie już po trzecim wykonaniu pętli (co wcale nie znaczy że mam rację bo niekoniecznie się na tym znam) |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
a czy nie moglbys zsynchronizowac tych danych? napisz skrypt co przeleci po bazie, sprawdzi czy sa dane pliki i jak nie ma to kasuje wpis z bazy lub ustawia odpowiednie pole na null. a potem do losowania to juz tylko po bazie lecisz. Wydaje sie, ze w tej chwili jest sytuacja troche nie teges, ze ci sie dane tak roznia i tak raczej byc nie powinno
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 177 Pomógł: 0 Dołączył: 8.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
a czy nie moglbys zsynchronizowac tych danych? napisz skrypt co przeleci po bazie, sprawdzi czy sa dane pliki i jak nie ma to kasuje wpis z bazy lub ustawia odpowiednie pole na null. a potem do losowania to juz tylko po bazie lecisz. Wydaje sie, ze w tej chwili jest sytuacja troche nie teges, ze ci sie dane tak roznia i tak raczej byc nie powinno nie rozpisując się i nie wnikając w szczegóły: powinno być tak jak teraz |
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
jesli bys znalazl chwilke to moglbys sie rozpisac, ja sie nie pogniewam
![]() Skoro nie ma jakiegos pliku, a baza wskazuje ze powinien byc, to w bazie powinno byc jakies pole, ktore mowi ze jednak tego pliku nie ma, badz tez poprostu powinien byc null w nazwie pliku. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 177 Pomógł: 0 Dołączył: 8.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
plikiem jest fotka. w bazie mam wpisany cennik i w innej tabeli są opisy produktów. jeżeli fotka o danym indeksie istnieje to na stronie w opisie produktu jest wyświetlana a jak nie to nie. w tej chwili chciałbym sobie wyświetlić losowo trzy produkty ale spośród tych które posiadają fotki
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
ok. a wiec moim zdaniem masz zle zaprojektowany system do zarzadzania. W jaki sposob zapodajesz fotki dla produktu? Recznie wrzucasz na serwer? Bo wyglada ze tak. Bo gdyby to bylo robione z poziomu aplikacji, to aplikacja by wiedziala czy jest fotka czy nie. Bo to przez nia bys wowczas uploadowal fotke dla produktu, badz tez usuwal. Na tej podstawie aplikacja by zaznaczala dla produktu czy jest fotka czy nie. a potem wyswietlanie losowych zdjec ograniczylo by sie tylko do bazy i znacznie by przyspieszylo proces
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 177 Pomógł: 0 Dołączył: 8.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
rozpisując się dalej: w opisie produktów mam kolumnę z adresami fotek ale tylko jeśli pobierane są z zewnętrznego serwera. najpierw sprawdzam czy fotka ma być z innego serwera, jeśli nie to sprawdzam czy mam ją u siebie a jeśli nie to nie wyświetlam jej. w tej chwili pomyślałem że jeśli fotkę mam u siebie to wpisuję ją w miejsce tej z serwera ale znów będę miał dwa rodzaje wpisów (jeden to sam indeks (typu KOMP1234) gdy fotka jest u mnie a drugi to np. serwer.com/komputery/komputer.jpg). identyfikacja wpisu nie byłaby problemem ale w ten sposób ładowałbym dane do bazy a staram się to ograniczać. muszę się jeszcze nad tym zastanowić.
w tej chwili moje zapytanie kończy się na LIMIT 20 a sama pętla jest wykonywana najczęściej 5 razy (maks było 14). generalnie gdy w szczególnym wypadku wyświetlą mi się dwa produkty zamiast trzech to nie będzie to problemem. zarówno fotki (przez ftp) jak i opisy (przez csv) wrzucam ręcznie bo jest mi wygodniej i szybciej |
|
|
![]()
Post
#11
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
No to troche inaczej to teraz wyglada. Jak ci pasuje, no to czemu nie
![]() Ale gdyby tak pogdybac jeszcze troche, to mozna by walnac dwa pola. jedno wskazuje na plik na zewnetrzym serwerze, drugie na lokalnym. nie musisz sie wowczas bawic w analize. ale chyba teraz tak wlasnie masz, albo nie zrozumialem dokladnie. No nic. jesli oba pola beda null, znaczy ze fotki nie ma. Cytat zarówno fotki (przez ftp) jak i opisy (przez csv) wrzucam ręcznie bo jest mi wygodniej i szybciej Masz racje - wygodniej i szybciej. tylko ma to wlasnie te wade, ze jest niespojnosc danych. Ale i na to mozna zaradzic. Dopisz dodatkowy skrypt co mowilem wczesniej, niech on sprawdza czy dane sie pokrywaja i uaktualnia dane w bazie. Skrypcik ten mozesz zapuszczac po swoich recznych zmianach.Podsumowujac: Jesli fakt niespojnosci danych nie wplywa na wydajnosc i ci to pasuje no to git. Jesli jednak do wyswietlenia 3 fotek, ty musisz mimo wszystko pobierac z bazy wszystkie dane, to troche nie tak jest. Oczywisicie Twoj sposob optymalizacji polegajacy na pobraniu 20 fotek wydaje sie dobry pod warunkiem ze faktycznie ta trafnosc bedzie taka jak mowiles. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 177 Pomógł: 0 Dołączył: 8.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
mam jedną kolumnę w której może być (ale nie musi) adres do fotki z zewnętrznego serwera.
pomijając chwilowo skrypt o którym mowa, wyświetlanie fotki do opisu produktu wygląda tak: 1. sprawdzam czy jest coś w tym polu, jeśli tak to wyświetlam tą fotkę 2. jeżeli to pole jest puste to sprawdzam czy mam plik na dysku i wyświetlam fotkę 3. jeśli w obu przypadkach nie mam nic to nie wyświetlam fotki idąc twoim sposobem: 1. sprawdzam pierwsze pole - jeśli coś jest wyświetlam fotkę 2. jeżeli pierwsze pole jest puste to sprawdzam drugie pole - jeśli coś jest wyświetlam fotkę 3. jeśli w obu nic nie ma nie wyświetlam nic jaka jest różnica pomiędzy tymi sposobami? mowa jest o fotce w opisie pojedyńczego produktu czyli to zapytanie nie jest aż tak mocno wykorzystywane. w tej chwili dla mnie różnica to dodatkowe dane w bazie danych w formie drugiej kolumny z indeksami fotek z drugiej strony (i na to się teraz nastawiam) każdy nowy produkt który wstawiam jest już z fotką u mnie więc fotki z obcego serwera są powoli wypierane. w takim razie mógłbym zostawić jedną kolumnę i wpisywać do niej nazwy fotek lub biorąc pod uwagę że nazwa jest taka jak indeks produktu to wystarczyłoby wtedy wpisywać np. 'x' gdy produkt posiada fotkę i wtedy zrobienie skryptu którym zacząłem post było by bardzo proste. natomiast minusem tego rozwiązania było by to że gdybym sobie przypadkiem skasował jakąś fotkę (z dysku) to na stronie będzie wyświetlany jej brak (generowany przez przeglądarkę) no ale to już można okresowo sprawdzać jakimś skryptem czy 'x' z bazy pokrywa się z tym co jest na dysku. kolejnym minusem będzie to że w tej chwili gdy nie mam fotki i chce ją dodać to poprostu wrzucam ją do odpowiedniego katalogu a w tym (lub twoim) rozwiązaniu musiałbym dodatkowo pamiętać żeby wstawiać 'x' do bazy danych póki co muszę sobie jakoś sprawdzić ile jeszcze fotek jest pobieranych z zewnętrznego serwera, jeśli niewiele to zabieram się za zmiany skryptów... Ten post edytował Arek00 5.06.2006, 15:17:32 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 17:00 |