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
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A nie możesz włączyć synchronicznego żądania? (IMG:style_emoticons/default/winksmiley.jpg)

Jeśli chodzi o inne kwestie - spróbuj workera wydzielić do osobnego skryptu i odpalać w ten sposób: http://www.ibuildings.co.uk/blog/archives/...-with-CURL.html

Cytat
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ść)

Tak btw, to co ten skrypt mieli, że aż 10 sekund zajmuje?

Cytat
- przerzucenie sesji do bazy (zmiana save_handlera)

Nie zdziwiłbym się, gdybyś wpadł z deszczu pod rynnę. Jeśli chodzi o bazę, to w większości wypadków są w niej trzymane tylko metadane sesji (IP, user agent, jakieś mniejsze pierdoły), ale same dane sesji są trzymane w plikach. (mam tu na myśli tabelę MEMORY, inne raczej nie będą miały zbyt wielkiego sensu).

Jeśli nie masz innego wyjścia, a chcesz mielić w sesji tyle, ile masz, to napisz handlera trzymającego dane sesji via memcached. Tylko nie zapomnij o napisaniu blokera, żeby ktoś inny nie nadpisał. (IMG:style_emoticons/default/winksmiley.jpg) Ale jak to zrobić, to jest nawet w manualu PHP napisane, w którymś komentarzu.

Cytat
- wywołanie session_write_close znacznie wcześniej

To też jest wyjście, zakładając że dalej już nie potrzebujesz dostępu sesji.
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: 12.10.2025 - 03:17