Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Kill proces
crazy191
post
Post #1





Grupa: Zarejestrowani
Postów: 79
Pomógł: 6
Dołączył: 20.04.2009

Ostrzeżenie: (0%)
-----


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ć?
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
crazy191
post
Post #3





Grupa: Zarejestrowani
Postów: 79
Pomógł: 6
Dołączył: 20.04.2009

Ostrzeżenie: (0%)
-----


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ę.
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
crazy191
post
Post #5





Grupa: Zarejestrowani
Postów: 79
Pomógł: 6
Dołączył: 20.04.2009

Ostrzeżenie: (0%)
-----


Nie ta ranga projektu i klienta.
Go to the top of the page
+Quote Post
by_ikar
post
Post #6





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


Ustaw timeout dla tego konkretnego żądania. Killowanie procesu to nie jest dobry pomysł.
Go to the top of the page
+Quote Post
kayman
post
Post #7





Grupa: Zarejestrowani
Postów: 556
Pomógł: 40
Dołączył: 20.07.2012
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
sazian
post
Post #8





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 141
Dołączył: 19.09.2006
Skąd: B-tów

Ostrzeżenie: (0%)
-----


Dalej nie rozumiem po co to skoro php ma "max execution time", ustaw jakiś sensowny czas i samo będzie zdychało.
Go to the top of the page
+Quote Post
Lion
post
Post #9





Grupa: Zarejestrowani
Postów: 148
Pomógł: 14
Dołączył: 23.02.2013

Ostrzeżenie: (0%)
-----


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ź.


--------------------
Go to the top of the page
+Quote Post
maly_swd
post
Post #10





Grupa: Zarejestrowani
Postów: 744
Pomógł: 118
Dołączył: 14.02.2009
Skąd: poziome

Ostrzeżenie: (0%)
-----


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

Ten post edytował maly_swd 1.03.2017, 11:05:11


--------------------
śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu..
Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@maly_swd moj drugi post w tym temacie odnosi sie wlasnie do rzeczy, ktore podales smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
maly_swd
post
Post #12





Grupa: Zarejestrowani
Postów: 744
Pomógł: 118
Dołączył: 14.02.2009
Skąd: poziome

Ostrzeżenie: (0%)
-----


@Nospor: Faktycznie, uznałem to co wpisałeś, że to część Twojej stopki smile.gif


--------------------
śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu..
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.08.2025 - 14:08