Ajaxové volání statické metody z everyTime
- Saurian
- Člen | 28
Prosil bych o pomoc, už začínám být v koncích …
- Potřeboval bych v šabloně zobrazovat každou vteřinu několik hodnot z tabulky datábaze.
- V druhé tabulce mám hodnoty které rovněž potřebuji zpracovávat každou vteřinu, ale už je nemusím neustále číst z databáze, stačí jen jednou načíst a „někde“ uložit (statická třída ?).
Problém je, že nevím jak vhodně volat signál z Ajaxu tak, aby se mě
neustále nevytvářeli instance celého projektu.
Testovací verze …
Presenter:signal
AjaxLiveModel
Šablona
Nastavení attributu $neco v AjaxLiveModelu provádím např.
nebo ve startupu Presenteru.
Já bych potřeboval nějaký způsob, jak nastavit „$neco“ jen jednou. Ajax mi voláním signálu vytváří instanci celého projektu, proto se samozřejmě i nastavování „$neco“ provádí po každém volání Ajaxu, tj. každou vteřinu.
Zatím bych viděl způsob asi následující …
Ale nevím jak na to :)
Navíc pozoruji pro mě zatím překvapivý závěr, tenhle způsob volání
„everyTime“ nefunguje spolehlivě v IE, kde se neprovádí každou
vteřinu, ale každé 2 vteřiny, navíc sem tam padá Apache (náhodně tak po
1–5 minutách).
Ve Firefoxu / GoogleChrome bez problémů. (FireBug si taktéž nestěžuje).
Zkoušeno jak na IE7 tak i IE8 .
Co myslíte, kde bude problém a jak jej řešit ?
Editoval Saurian (8. 5. 2010 0:33)
- newPOPE
- Člen | 648
Problém je, že nevím jak vhodně volat signál z Ajaxu tak, aby se mě neustále nevytvářeli instance celého projektu.
- toto sa mi vidi tak trocha somarina, to co sa vytvara ta nemusi zaujimat skor ako to spracujes a co ide do response
Já bych potřeboval nějaký způsob, jak nastavit „$neco“ jen jednou. Ajax mi voláním signálu vytváří instanci celého projektu, proto se samozřejmě i nastavování „$neco“ provádí po každém volání Ajaxu, tj. každou vteřinu.
SESSION ?? (mozno by to riesila aj cache + nejake invalidacne pravidla napr. po x sekundach)
Editoval newPOPE (8. 5. 2010 12:11)
- Saurian
- Člen | 28
newPOPE napsal(a):
Problém je, že nevím jak vhodně volat signál z Ajaxu tak, aby se mě neustále nevytvářeli instance celého projektu.
- toto sa mi vidi tak trocha somarina, to co sa vytvara ta nemusi zaujimat skor ako to spracujes a co ide do response
newPOPE, jsem ve fázi učení se v Nette , nicméně mám za sebou léta programingu čistě jen jako koníček v jiných jazycích, zde teprve začínám. Nejde mi jen o to aby to „nějak“ fungovalo, ale trošku i o optimalizaci :)
SESSION: máš pravdu, taky jsem o tom uvažoval, ale
vzhledem k důležitosti údaje, raději ne …
(taky jsem si říkal do Sessionu timestamp, časové razítko, ale raději
žádný Session, spíše čistější cesta)
Zatím to řeším tak, že jsem resignoval z funkce „everyTime“ a přešel jsem na starý způsob
V Presenteru získám údaj z DB
V šabloně posílám „ajaxtest“ na zpracování
Není to ideální řešení (to by bylo asi, kdybych nějak z $.getJSON({volal přímo statickou metodu}, {}, function(payload)…
ale mám zatím volné ruce (vytváří se jen jedna instance, která se pěkně ukončí)
Navíc pozoruji jednu zajímavost, po hodině provozu nepadá Apache v IE, (ale Ajax část se stále volá každou druhou vteřinu v IE, nevím proč) , že by chyba v jquery.timers knihovně (everyTime) ? Do toho moc nevidím .
Jdu to zatím z testů předělat zpět na projekt, kdyby mi nějaký odborník poradil jak tyto problémy řešit čistěji, byl bych rád, protože jsem opravdu jen ve fázi učení se a odborník rozhodně nejsem :)
- newPOPE
- Člen | 648
SESSION: máš pravdu, taky jsem o tom uvažoval, ale vzhledem k důležitosti údaje, raději ne … (taky jsem si říkal do Sessionu timestamp, časové razítko, ale raději žádný Session, spíše čistější cesta)
no asi to povazujes za dolezity udaj :-), tak v session mozno nejaky key a udaj drzat v DB, subore (1× zapis, a potom uz len xx citanie)
takze hodnotu setNeco zapisem raz do session vrazim key a je vybavene potom uz len
Nejde mi jen o to aby to „nějak“ fungovalo, ale trošku i o optimalizaci :)
Malokedy na 1× krat vymyslis nieco genialne…, to sa mi po pravde este nepodarilo :D
To s tym volanim statickej metody asi nepojde, nic ma nenapada, lebo cely priebeh od requestu az po respone je nejaky zivotny cyklus ci uz Nette, Presenteru a pod. takze by som to napisal v ramci FWorku.
To s tymi IEckami, napada ma (nepozeral som) ze pokial getJSON neposiela nejake nahodne cislo v param… tak IE to niekedy nejak divne cachoval a v podstate nic nechodilo tam a spat.
- Saurian
- Člen | 28
no asi to povazujes za dolezity udaj :-), tak v session mozno nejaky key a udaj drzat v DB, subore (1× zapis, a potom uz len xx citanie)
Vím kam míříš, je to určitě funkční řešení, asi jsem trochu takový „nevěřící Tomáš“ :) , určitě si Sessiony nechám jako záložní řešení.
Malokedy na 1× krat vymyslis nieco genialne…, to sa mi po pravde este nepodarilo :D
Pravda, to by fórum pak mohlo mít jen sekci „geniální řešení geniálních lidí“, to by nějak nebylo ono, kde by jsme pak komunikovali :))
To s tym volanim statickej metody asi nepojde, nic ma nenapada, lebo cely priebeh od requestu az po respone je nejaky zivotny cyklus ci uz Nette, Presenteru a pod. takze by som to napisal v ramci FWorku.
Vypadá to tak, zkoušel jsem jen na testy dát pevnou adresu na externí Ajax model a Nette mi pěkně vynadalo 403jkou (za což jsem docela rád, vypadá to že autoři Nette mysleli na bezpečnost dobře :) ,víc jsem se v tom nevrtal)
To s tymi IEckami, napada ma (nepozeral som) ze pokial getJSON neposiela nejake nahodne cislo v param… tak IE to niekedy nejak divne cachoval a v podstate nic nechodilo tam a spat.
Ano, nejak se to chová divně v těch IE . Tohle bude ještě prácička. První předělám projekt podle nových nápadů a pak to musím vyřešit.
Zatím díky za ispirace :)