Autor | Zpráva | ||
---|---|---|---|
G3n3sis19 Profil |
#1 · Zasláno: 19. 5. 2011, 14:27:45 · Upravil/a: G3n3sis19
Dobrý odpoledne,
mám tu problém. Přes ajax volám stránku, která každou vteřinu vybere z databáze novinky (např u mě zprávy v chatu), a pokud nějaké jsou, vypíše je a "umře", jinak sleep();ne a pokračuje za 1 vteřinu, dokud není novinka nebo dokud nedosáhne timeout (50 000 ms) Problém je, že když se "načítá" (čeká) skript který kontroluje novinky a mezitím pošlu správu (ajaxem, POST), tak ten pozdější čeká, než se udělá ten, co kontroluje novinky: 1. ajax.php?co=novinky (max 50s, nebo po nové události) 2. ajax.php?co=pridat_zpravu (měl by se udělat ihned) jenže 2. čeká na dokončení jedničky. Hledal jsem hledal a zjistil jsem, že sleep(); sleepuje všechny skripty pro stejnou SESSION, a tudíž je možné, že se zpráva odešle do DB až po těch 50sekundách. Jak to mám tedy udělat, aby se nepletly a POST se udělal zároveň s GETEM který každou vteřinu spí a vytahuje novinky ? Ve firebugu to vypadá následovně kód jedničky vypadá asi takto $sek = 0; while ($sek<49) { $novinky = mysql_num_rows(mysql_query("SELECT id FROM novinky .....")); if ($novinky) { $novinky_data = json_encode(mysql_fetch_assoc(mysql_query("SELECT * FROM novinky ...."))); die($novinky_data); } else { sleep(1); } } die("zADNY novinky"); |
||
Jan Tvrdík Profil |
#2 · Zasláno: 21. 5. 2011, 18:42:38
Zkus před zde uvedený první řádek umístit volání
session_write_close(); .
|
||
G3n3sis19 Profil |
#3 · Zasláno: 21. 5. 2011, 19:14:35
díky moc za radu. vyřešil jsem to malinko jinak. long-polling script mám teď na subdoméně a funguje to!
Mám tu jen malý přesto nepřípustný problém: když dám před while(){} kód print_r($_SESSION);print_r($_COOKIE);die(); array ( ) array ( ) ale když si OKOPÍRUJU stejnou adresu toho skriptu a dám ho do browseru, vidím array ( [username] => martin_test ) array ( [PHPSESSID] => as2d316a54d65s4g ) když se podívám v browseru na cookie, PHPSESSID má doménu s tečkou na začátku, tutíž to má vidět všude. bohužel, když si tam šáhnu ajaxem, SESSION nevidí :( |
||
Časová prodleva: 13 let
|
0