Autor | Zpráva | ||
---|---|---|---|
nethor Profil |
#1 · Zasláno: 1. 2. 2019, 17:52:29
Stala se mi taková věc.
V e-shopech většinou zboží v nákupním košíku zapisuji do session, léta to funguje, bez problémů. V jednom e-shopu ale potřebovali, aby zboží zůstalo v košíku delší dobu, třeba několik dní a i když zákazník resne PC. Stav košíku jsem tedy předělal, aby se ukládal do cookies. (Ukládám Id zboží a množsví). Vše fungovalo skvěle, dokud objednávka nepřesáhla asi 150 položek. Pak se začala zobrazovat pouze prázdná stránka, jako by server nevrátil vůbec nic. Už tuším, jak tenhle problém řešit. (Objednávané zboží uložit do databáze a do cookies pouze identifikátor.) Ale zajímá mě, co se to vlastně děje, proč při překročení množství/velikosti cookies přijde prakticky okamžitě prázdná odpověď... |
||
RastyAmateur Profil |
#2 · Zasláno: 2. 2. 2019, 00:50:03
nethor:
Napadá mě to, že nedostaneš prázdnou odpověď, ale nějaký error. Ovšem na produkčním serveru máš určitě errory vypnuté, tudíž se zobrazí jen prázdná stránka |
||
Kajman Profil |
#3 · Zasláno: 2. 2. 2019, 00:56:41
Podíval bych se do logů, zda ten požadavek vůbec k webovému serveru přišel a zda tam není u něho vypsaná chyba.
|
||
nethor Profil |
#4 · Zasláno: 3. 2. 2019, 15:48:56
Nepsalo to nic, ikdyž jsem zapnul ini_set('error_reporting', E_ALL);
Error log, do kterého se na hostingu dostanu je prázdný a z access logu jsem nic nevyčetl. (ale možná jen nevím, co hledat) Napsal jsem si ale zkušební script, a když jsem nechal uložit asi 200 cookies, vrátěla se mi hláška: Err 400 Bad Request Your browser sent a request that this server could not understand. Size of a request header field exceeds server limit. To by dávalo smysl, hlavička je asi moc dlouhá. Chybu vyhodí Apache a na PHP ani nedojde... |
||
Keeehi Profil |
nethor:
Typická maximální velikost cookie je kolem 4000 bajtů. Při 150 položkách to vychází kolem 26 bajtů na položku. Pokud je položka reprezentovaná jen číselným ID, tak by se tam mohla vejít. Pokud tam máš ale i nějaké další informace (jako že by to dávalo smysl) tak pak je dost možné že je tato velikost překročena. „ikdyž jsem zapnul ini_set('error_reporting', E_ALL);“ Vypisování chyb ještě závisí na hodnotě display_errors. |
||
nethor Profil |
#6 · Zasláno: 3. 2. 2019, 16:14:23
Košík každopádně musím předelat a psát do databáze, některé objednávky mají až 400 položek..
Jen mě zajímalo, čím je chyba způsobená, abych se jí příště vyhnul. Tedy vyřešeno. Díky všem. |
||
Bubák Profil |
#7 · Zasláno: 3. 2. 2019, 16:43:04
nethor:
„Košík každopádně musím předelat a psát do databáze“ Anebo do Local Storage. Ale mám dojem, že v tomto případě opravdu bude výhodnější mít obsah košíku v databázi. |
||
Keeehi Profil |
Tak ona výhoda toho uložení v databázi je také ta, že člověk si může pak udělat objednávku na jednom zařízení a dokončit ji na jiném.
|
||
Časová prodleva: 5 let
|
0