Prohlížení tohoto vlákna:
2 Anonymní uživatelé
Zkušenosti s se zápisem a vyhledáním v DB při zpracování FEEDu |
||
---|---|---|
Pokročilý
Členem od:
23:22 27.2.2007 Skupina:
Registrovaní uživatelé Příspěvky:
43
|
Zdravím všechny pokročilé,
řeším importní modul XML FEEDu do ZC. Zjistil jsem zvláštní situaci a nevím jak z ní ven. Vytvářím strukturu kategorií a na vstupu zjišťuji, zda kategorie se (jménem) již existuje. SELCLT categories_id FROM categories_description WHERE categories_name = "název". SQL je zjednodušený. Při prvním průchodu samozřejmě nic neexistuje, tak se mi vrátí výsledek např. takto: $v = $db->Execute($sql); echo $v->RecordCount(); // vrati 0 Nechám kategorii zavést a ověřím zavedení načtením ID aktuálního záznamu: $ID_kategorie = $db->insert_ID(); // vrátí při prvním průchodu 1 Když ale proběhne kód v dalším kroku a výrobek má uvedenou stejnou kategorii, tak mi RecordCount vrátí opět nulu. Stejné je to s testováním $v->EOF. EOF stále hlásí 1. Testuji na prvních 10 položkách z XML a stále se mi vrací nula v počtu vybraných záznamů a 1 jako potvrzení konce záznamu EOF. Když script skončí a já se podívám do tabulky, tak tam ale vidím, že jsou kategorie zavedené a pro každou se stejným jménem je vytvořen nový záznam. Plyne mi z toho, jako by po odeslání SQL dotazu došlo ke zpracování, ale při načtení dalšího dotazu, jako zůstávala nějaká Cache, která podhazuje původní hodnotu místo aktuální. Dá se to někde nasimulovat nebo ověřit? díky Borek
Zasláno: 19:16 21.6.2021
|
|
_________________
Borek |
||
Přenos |
Re: Zkušenosti s se zápisem a vyhledáním v DB při zpracování FEEDu |
||
---|---|---|
Pokročilý
Členem od:
23:22 27.2.2007 Skupina:
Registrovaní uživatelé Příspěvky:
43
|
Tak se k mému tématu vracím opět po nějakém času.
Dnes jsem problém vyřešil. Bylo to cachováním (kešováním) výsledků ať už z MySQL nebo z PHP. Zkusil jsem do dotazu, který zjišťuje jestli je již kategorie zavedená, vložit náhodnou část kódu a tím dojde ke skutečnému načtení dat z DB nikoliv z cache. Tedy provedená úprava vypadá takto: $RN = rand(); // generuji náhodné číslo např. 123456 $sql = "SELECT categories_id FROM categories_description WHERE categories_name = 'název' /* $RN */"; po vložení náhodného čísla vznikne $sql = "SELECT categories_id FROM categories_description WHERE categories_name = 'název' /* 123456 */"; Náhodné číslo je v komentáři, takže neovlivní dotaz, ale dotaz je pokaždé jiný a musí se vygenerovat znovu z DB. A tím se mi vrátí aktuální data. Takže kdo řešil podobný problém, zde je rada jak na to. díky Borek
Zasláno: 7.6. 11:41
|
|
_________________
Borek |
||
Přenos |
Můžete prohlížet témata.
Nemůžete zakládat nová témata.
Nemůžete odpovídat na příspěvky.
Nemůžete editovat Vaše příspěvky.
Nemůžete mazat Vaše příspěvky.
Nemůžete přidávat nové ankety.
Můžete hlasovat v anketách.
Nemůžete připojovat soubory k příspěvkům.
Nemůžete přispívat bez schválení.