[ sojic @ 23.11.2010. 15:40 ] @
| Imam sledeci scenario:
Uploadujem .pdf fajl koji treba da "razbijem" i resize-ujem u slike (jpg). Taj proces traje prilicno dugo, tako da posle uploada, na serveru startujem skriptu za konverziju.
Uz pomoc ajax requesta (svakih x sekundi), klijenat proverava dolke je konverzija. Svaki put kad zavirsi konverziju jedne (ili vise strane), klijent treba da dobije listu zavrsenih stranica.
Pokusao sam da radim sa timestamp-a:
Kad konvertor zavrsi stranicu, upise u bazu link do slike i timestamp kada je zavrsio.
Klijenat vrsi request /progress/get/ede55a9800e2879d3b4e0938c90a8c76/1290525715 - gde prvi parametar je sesija, drugi parametar je prethodni timestamp, kada je zadnji put dobio odgovor od servera.
Server vrati novi timestamp, i listu rekorta od baze gde timestamp>=1290525715 (recimo).
Ali ovde se desava da nekad "propusti" neku sliku, ili nekad dobijem jednu sliku u vise requesta, pa dobijem duplikat slike.
Ako moze neko iskustvo/hint, kako da resim ovaj problem?
Imao sam ideju da svaki put dobijem listu "gotovih" slika, a na klijentskoj strani da proveravam koji su nove, ali mi se ne svidja to resenje. |
[ Nikola Poša @ 23.11.2010. 16:16 ] @
Možda je bolje da taj kriterijum za dohvatanje sveže obrađenih stranica ne bude vreme, već neki običan marker, koji govori da li je klijent dobio informaciju o toj slici/strani ili ne. Tako da, možda bi trebao da pokušaš sa dodavanjem takve neke kolone u tabelu sa slikama. U tom slučaju bi dohvatao samo one unose kod kojih ta kolona ima vrednost nula, ili šta već, a pri svakom izvršavanju te akcije bi je postavljao na 1. Vrednost te kolone unosa koji budu stizali će po default-u biti 0, tako da si siguran da će samo oni biti vraćeni kada klijent bude zatražio informaciju o progresu.
[Ovu poruku je menjao Nikola Poša dana 23.11.2010. u 19:57 GMT+1]
[ Nikola Poša @ 23.11.2010. 19:00 ] @
btw Sad razmišljam, to rešenje sa timestamp-om je sasvim ok, ali mi nije jasno zašto klijentska strana mora da vodi računa o vremenu, u smislu prosleđivanja timestamp-a kroz URL... Zar to informacija ne možeš da bude sadržana u sesiji? Bolje je da server vodi računa kad je poslednji put zatražena informacija o progresu, a da klijent samo konstantno zahteva te podatke. Možda baš to baratanje sa vremenom na klijentskoj strani dovodi do vraćanja netačnih podataka.
[ sojic @ 23.11.2010. 23:35 ] @
Jedan razlog je da uvek imam razliciti url, da se ne desi slucajno da klijent ucita stare (kesirane) podatke.
Pokusacu sutra/prekosutra sa markerom, pa videcemo.
[ sojic @ 23.11.2010. 23:37 ] @
Jedan razlog je da uvek imam razliciti url, da se ne desi slucajno da klijent ucita stare (kesirane) podatke.
Pokusacu sutra/prekosutra sa markerom, pa videcemo.
[ sojic @ 24.11.2010. 11:34 ] @
Dodao sam jos jedno polje "new=1", koje updatujem na 0 kad uzmem novo stanje. Radi bolje. Za sad nema problema.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.