Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> W pełni blokujące requesty
wookieb
post
Post #1





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Witam,

Napotkałem męczący problem całkowie blokujących requestów i tak naprawdę nie wiem jak można sobie dać z tym radę.
A mianowicie jest taka sytuacja:
Otwieram stronę na której jest żądanie ajax wykonujące się 10 sekund i niestety podczas tych 10 sekund (żądanie ajax) nie mogę przejść na inny link (w obrębie tej samej domeny/serwera) dopóki nie zakończy się żądanie ajax.
Zatrzymanie żadania nic nie daje, skrypt musi się zakończyć na serwerze.
Próbowałem ustawić ignore_user_abort na false ale to raczej nie tędy droga.
Czy jest do tego odpowiednie ustawienie serwera apache czy niestety nic nie da się z tym zrobić?

EDIT:
Jedna rzecz, która mi jeszcze wpadła do głowy to może konieczność dodania pewnego nagłówka do żądania?

Ten post edytował wookieb 2.04.2010, 18:33:50
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




~thek pomysł ciekawy i sprawdzę czy działa nie blokująco (IMG:style_emoticons/default/smile.gif)
~strife około 10 sekund, jeżeli chodzi o optymalizację to nic nie zrobię, ponieważ gdyby to był mój system to skrypt nie działał by dłużej niż jedną sekundę, a teraz przebudowywanie molocha byłoby niezwykle trudne (IMG:style_emoticons/default/smile.gif)
Aczkolwiek nie jest to dla mnie ogromnie potrzebne lecz na przyszłość przydałaby się wiedza, która owy problem rozwiązuje. Przetestuje z subdomenami i pochwalę się wynikami (IMG:style_emoticons/default/smile.gif)

Okazało się, że to nie ma nic wspólnego z apachem ani innymi ustrojstwami. Wina leży po stronie standardowej sesji.
Skrypty bez niej działają "wielowątkowo".
Standardowa sesja działa na plikach i podczas wykonywania jednego skryptu plik sesyjny jest zablokowany i żaden inny skrypt nie jest w stanie skorzystać z sesji dopóki plik nie będzie odblokowany (dlatego oczekuje na jego dostępność)
Możliwe rozwiązania to:
- wyłączenie sesji dla ajaxa
- przerzucenie sesji do bazy (zmiana save_handlera)
- wywołanie session_write_close znacznie wcześniej

Dzięki wszystkim za chęć pomocy (IMG:style_emoticons/default/smile.gif)


Ten post edytował wookieb 3.04.2010, 07:59:32
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 13:46