Chyba, když nastanou dva AJAXové požadavky

mordare
Začátečník | 117
+
0
-

Zdravim.
Mám interní systém a využívám nette ajax pro invalidaci snippetu časomíry v pravidelných intervalech. Vše je OK dokud například neotevřu stránku kde mám tabulku, kterou můžu filtrovat.
Filtr je formulář, který se po změně odešle a invaliduje snippet s tabulkou. Většinou je to v pořádku, ale když se stane že se mi povede vyvolat jak AJAXový požadavek u tabulky a AJAXový požadavek pro časomíru, nastane nějaká chyba (viz. laděnka dole). Smažou se mi všechny Session a odhlási to uživatele.

Ve zkratce: Dva AJAXové požadavky se mi vyvolají ve stejnou chvíly. Smažou se mi SESSION a odhlásí to uživatele.

Aplikace běží na Nette 2.3.10

Laděnka: Warning: session_regenerate_id(): Session object destruction failed in vendor\nette\http\src\Http\Session.php:221

Invalidace časomíry:

<script>
function redrawSnippets(){
    $.nette.ajax({
        url: {link redrawSnippets! name=>"todayTime"}
        error: function(jqXHR, status, error){
            console.log(jqXHR);
            console.log(status);
            console.log(error);
        }
    });
}

setInterval(function(){
    redrawSnippets()
}, 15 * 1000);
</script>

Prosím nesetkali jste se s tím někdo? Nebo nevíte jak to vyřešit aby to alespoň nemazalo ty SESSION?

Díky

Editoval mordare (19. 9. 2016 16:23)

Michal Hlávka
Člen | 190
+
0
-

Co pouzivas za verzi php?

Jan Mikeš
Člen | 771
+
0
-

Zkus vypnout unique extension pro nette.ajax.js, mohlo by to pomoci.

mordare
Začátečník | 117
+
0
-

Můžu se zeptat jak na to vypnutí toho Unique? V jedné z verzí toho dotazu sem tam i něco s tím Unique měl, ale nevím jestli to bylo dobře, ale hlavně to nic nezměnilo.

<script>
function redrawSnippets(){
        $.nette.ajax({
            url: {link redrawSnippets! name=>"todayTime"},
            off: ['unique'],
            error: function(jqXHR, status, error){
                console.log(jqXHR);
                console.log(status);
                console.log(error);
            }
        });
    }

    setInterval(function(){
        redrawSnippets()
    }, 15 * 1000);
</script>

ps.: PHP tam máme verzi 5.6

ps2.: system info http://prntscr.com/cjx234

Editoval mordare (19. 9. 2016 20:30)

mordare
Začátečník | 117
+
0
-

Nikdo netuší jak to vyřešit?

CZechBoY
Člen | 3608
+
0
-

Co mas za session storage? V zakladnim chovani session zamezuje dalsimu procesu ke cteni (session spubor se na zacatku pozadavku zamkne, odemkne az pri session_write_close nebo ukonceni session).

mordare
Začátečník | 117
+
0
-

Nijak sem Storage nepřenastavoval oproti základnímu Nette, tj. by mělo byt asi ve FileStorage.

To že se SESSION uzamkne na to sem přišel, ale je mi záhadou, proč když se objeví druhý požadavak tak nepočká až je SESSION volná. Místo toho se ji to snaží (asi) vygenerovat znova.

mordare
Začátečník | 117
+
0
-

Chybu sem stálé nevyřešil. Ale už to začíná opravdu zavazet. Například v administraci máme filtr na textové vyhledání dat v tabulce a ve chvíli kdy napíšu rychle slovo (odešle se několikrát formulář) a dostanu opět výše zmíněnou chybu a odhlásí mě to.

ps: někdy to zahlásí tu chybu jen při obyčejném refreshi stránky

ps2: Nefunguje nám díky tomu ani addProtection u formulářu.

Editoval mordare (31. 3. 2017 10:34)

mrfazolka
Člen | 24
+
0
-

přidal bych se k dotazu – při uploadu více obrázků naráz pomocí https://blueimp.github.io/…File-Upload/ dostávám stejnou chybu – Warning: session_regenerate_id(): Session object destruction failed

Ajax
Člen | 59
+
0
-

Kdyby někdo náhodou v budoucnu narazil na podobný problém, u mě byla tahle chyba způsobena tím, že jsem posílal dva ajax requesty na server téměř paralelně. Měl jsem třídu ajax na form i submit