![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 165 Pomógł: 20 Dołączył: 2.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam do was pytanko, czy ktoś może spotkał się już z czymś takim.
Posiadamy bazę danych w firmie z produktami i osobną bazę danych w sklepie internetowym. I teraz tak. w Sklepie internetowym jest ok 3000 produktów a w bazie w firmie jest 4500 produktów Każdy produkt ma swój symbol i chodzi teraz o aktualizacje produktów w sklepie internetowym. Aktualizacja dotyczyć się tylko będzie ceny i ilości produktu. Jeżeli wszystko jest ok to nie będzie aktualizować. Mam wygenerowany automatycznie plik tekstowy z produktami z firmy w postaci: symbol|stan|cena I teraz jak najlepiej to zrobić aby zaktualizować te dane na sklepie www ? Dodam tylko że ta operacja będzie się wykonywać raz na 24 godziny. Myślałem o tym aby wczytać ten plik, lecieć po kolei z zapytaniami WHERE kod=symbol i jeżeli istnieje to zmieniać mu dane, jeżeli nie to leci dalej, ale to i tak wykona się 4500 razy ![]() -------------------- |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 012 Pomógł: 109 Dołączył: 26.09.2003 Skąd: nexis.pl Ostrzeżenie: (0%) ![]() ![]() |
Pętla wykonująca się 4500 razy raz na 24 godziny to praktycznie żadne obciążenie dla serwera, więć jak najbardziej możesz to właśnie tak zrobić.
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 165 Pomógł: 20 Dołączył: 2.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
Ale to będzie tylko jedne wykonanie, czyli liczę że to będzie 4500 zapytań do bazy z ciągu jakiś 5 minut, więc na pewno nic się nie stanie? serwery są na nazwa.pl
Pozdrawiam -------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 012 Pomógł: 109 Dołączył: 26.09.2003 Skąd: nexis.pl Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem po co ludzie pytają co się stanie zamiast to po prostu spróbować. Ale mimo wszystko odpowiem na twoje pytanie: nic się nie stanie!
-------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
skoro masz ładnie przygotowany plik w formacie CSV to możesz załatwić aktualizację jednym zapytaniem MySQL:
i żadne pętle w PHP nie będą potrzebne... -------------------- - Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... - |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 165 Pomógł: 20 Dołączył: 2.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
skoro masz ładnie przygotowany plik w formacie CSV to możesz załatwić aktualizację jednym zapytaniem MySQL:
i żadne pętle w PHP nie będą potrzebne... Ok, ale teraz, tabela products ma w sobie jakie 9 rekordów a ja chce zmienić tylko dwa, to jak można by to wykonać? aby podać nazwy rekordów? -------------------- |
|
|
![]()
Post
#7
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
a co to - rozdwojenie jaźni ? na początku posta aktualizujesz 4500 rekordów a na końcu już tylko 2?
2 rekordy to sobie zaktualizuj dwoma insertami w php ... -------------------- - Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... - |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 165 Pomógł: 20 Dołączył: 2.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
nie, chodzi mi o rekordy w tabeli, struktura tabeli jest taka:
CREATE TABLE products ( id INT NOT NULL AUTO_INCREMENT, cat_id INT NOT NULL, price FLOAT NOT NULL, promo_price FLOAT NULL, code VARCHAR(10) NOT NULL, dost VARCHAR(1) NOT NULL, atryb VARCHAR(500) NULL, sort INT NOT NULL, name VARCHAR(255) NOT NULL, category2 INT NULL, category3 INT NULL, weight VARCHAR(12) NOT NULL, vol1 VARCHAR(10) NOT NULL, vol2 VARCHAR(10) NOT NULL, vol3 VARCHAR(10) NOT NULL, date_add DATETIME NOT NULL, PRIMARY KEY ( `id` ) ) I chce aktualizować tylko price, code i dost A tych produktów w bazie jest właśnie 4500 Najlepsze jest to że jak zrobiłem to w pętli to po kilku chwilach skrypt się wywalił i miałem błąd. Pozdrawiam -------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 740 Pomógł: 15 Dołączył: 23.08.2004 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Po pierwsze nic nie stoi na przeszkodzie abyś wykonał kilka updatów za jednym zamachem. Zainteresuje się np. funkcją mysqli_multi_query.
Po drugie powinieneś użyć transakcji, która zapewni, że albo wszystkie pytania się wykonają, albo żadne. Po trzecie aktualizuj tylko te rekordy, które się zmieniły. Wtedy znacznie ograniczysz liczbę rekordów do aktualizacji. -------------------- bigZbig (Zbigniew Heintze) | blog.heintze.pl
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 18:43 |