![]() |
![]() |
![]()
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 |
|
|
![]() |
![]()
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. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 12.10.2025 - 03:17 |