Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kill proces
Forum PHP.pl > Forum > PHP
crazy191
Hej, nie mam pomysłu jak rozwiązać zachciankę klienta. Wymyślił sobie, że chce ubijać procesy php poziomu aplikacji (stronie serwera). Tzn, jeżeli długo ładuje mu się jakaś podstrona, lub żądanie ajax, to chce wyskakujący modal z opcją "kill process". I wtedy zabijam request i mogę wykonać inny. Ma ktoś pomysł jak to rozwiązać?
nospor
W przypadku strony to nie wiem jak zrobisz wyskakujacy modal bo dopoki strona sie nie zaladuje to i modal sie nie zaladuje raczej wink.gif

W przypadku ajax to masz raczej ubic ajax a nie php, a aktualnie chodzacy ajax to przeciez masz w js smile.gif

ps: i taka drobna dygresja na koniec:
moze zamiast robic zachciewajke klienta, to moze warto by poprawic kod, ktory jest uruchamiany przez ajax? Bo skoro ajax wykonuje sie tak dlugo, ze az klient sie niecierpliwi, to moze to wina zle napisanego kodu?
crazy191
Do małej dygresji. To jest nowy projekt, dopiero powstaje. Ta funkcjonalność to zachcianka klienta po doświadczeniach z wcześniejszym CRM-em.

Ajax zabije, ale i tak idzie żądanie na serwer i trwa dopóki się nie zakończy się.
nospor
To powiedz klientowi ze funkcjonalnosc jest gotowa, a sam nie doposc do tak nieoptymalnych skryptow i klient nie zauwazy wink.gif


Moze to pomoze
http://stackoverflow.com/questions/1652420...ancelled-closed
crazy191
Nie ta ranga projektu i klienta.
by_ikar
Ustaw timeout dla tego konkretnego żądania. Killowanie procesu to nie jest dobry pomysł.
kayman
Cytat(crazy191 @ 28.02.2017, 12:17:23 ) *
Ajax zabije, ale i tak idzie żądanie na serwer i trwa dopóki się nie zakończy się.


teoretycznie można ustawić pułapkę czasową i jak przekroczy limit wtedy exit, to samo na stronie, ale wyobrażam sobie jakiego to burdelu narobi w kodzie, kontrola nad tym też jest dużym znakiem zapytania

btw przy CRM składniki strony w większości przypadków mogą być wczytywane ajaxem, aplikacje zamknięte bardzo ładnie można rozwiązać frontedowo by wyeliminować wiekszośc takich czkawek, widoki php wtedy zubaża się do minimum smile.gif
sazian
Dalej nie rozumiem po co to skoro php ma "max execution time", ustaw jakiś sensowny czas i samo będzie zdychało.
Lion
Jeśli żądanie musi wykonywać się długo to może warto rozważyć napisanie daemona działającego w tle i wykonującego te zadania, aktualizującego postęp, a w głównej aplikacji zrobić "jedynie" tworzenia zadań dla daemona, sprawdzanie ich stanu, powiadamianie użytkownika o zakończonych pracach. W aplikacji nad która aktualnie pracują właśnie w ten sposób radzimy sobie z długim czasem oczekiwania na odpowiedź.
maly_swd
Na serwerze musisz skonfigurować opcję, która ubija proces jeśli przeglądarka ubije requesta.

Od tego zacznij smile.gif
http://www.php.net/manual/en/function.ignore-user-abort.php
i to:
http://nl3.php.net/manual/en/function.connection-aborted.php
nospor
@maly_swd moj drugi post w tym temacie odnosi sie wlasnie do rzeczy, ktore podales smile.gif
maly_swd
@Nospor: Faktycznie, uznałem to co wpisałeś, że to część Twojej stopki smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.