adammada
10.06.2010, 10:30:00
Mam postawionego pod Windows Apache + PHP5 + Postgesql.
Skrypt PHP czasem musi się połączyć z bazą danych na zewnętrznym serwerze. Wszystko tutaj działa.
Niestety, czasem zapytanie wykonuje się kilkadziesiąt sekund. Tak być musi, ok. Ale z chwilą gdy jeden użytkownik odpala to zapytanie do zewnętrznej bazy,
WSZYSCY muszą czekać. Nawet jeśli w ogóle nie mają nic wspólnego z tamtą bazą danych. Mogę się bezpośrednio łączyć do bazy, wykonywać dodatkowe zapytania w "międzyczasie".
Wygląda tak, jakby Apache pod windows nie był w stanie przetwarzać kilku requestów jednocześnie, tylko kolejkuje je i czeka z wykonaniem. A to mi wybitnie nie pasuje.
Co zrobić, aby tak nie było?
Edit: ups, nie to podforum, ale chyba nie mogę przenieść ani usunąć.
erix
10.06.2010, 19:06:02
Ok, to spróbuj najpierw:
Win32DisableAcceptEx On
na końcu pliku i restart demona.
adammada
10.06.2010, 21:24:50
Na początku sprostowanie:
Problem jest jednak tylko w obrębie jednej sesji/przeglądarki (jak odpalę dwie przeglądarki na komputerze, to nie blokują się wzajemnie).
Czyli:
Zaczynam ładować (ajaxem, ale bezpośrednie odwołanie blokuje tak samo) dane ze skryptu, który czeka kilkadziesiąt sekund na bazę danych.
I od tej pory żaden inny request (w tej samej przeglądarce) nie działa, póki tamten skrypt nie skończy. Przeszkadza, bo user sobie zapuszcza, nudzi się po kilkunastu sekundach - a tutaj wszystko przestaje działać. Nawet jak zamknie zakładkę, i na innej chcę coś robić.
Ta dyrektywa nie zmieniła tego.