• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

php - przerwana pętla w POST nadal wykonuje się w tle.

VPS Starter Arubacloud
0 głosów
99 wizyt
pytanie zadane 14 lipca 2019 w PHP przez niezalogowany

dzień dobry,

czy ktoś z was spotkał się już może z takim dziwnym przypadkiem?

Otóż mam bardzo prosty skrypt

if (post){
foreach($ZmiennaZ300Elementami as $item){
 // zadania pętli
//dodaje logi do pliku 
}
}

Wywołuje go z przeglądarki poprzez wciśnięcie przycisku.

Kręci kręci, przy około 100 elemencie okno przglądarki odświeża się i jestem przed formularzem natomiast z obserwacji logów w pliku widzę, że pętla nadal DZIAŁA(!) i wykonuje swoje zadania + dodaje logi do pliku.

o co tutaj chodzi? :O

1 odpowiedź

0 głosów
odpowiedź 14 lipca 2019 przez Chess Szeryf (76,710 p.)
edycja 14 lipca 2019 przez Chess

Może nie wrzucaj po kolei wszystkiego, jakieś małe dane, tylko od razu większą część bądź całość.

Wykonaj konkatenację ".=" i dopiero append'uj do pliku.

Wydaje mi się, że problem polega na zbyt długim czasie oczekiwania na odpowiedź, żeby to zmienić musisz zmienić ustawienia serwera np. Apache z poziomu PHP lub Serwera. Poszukaj w ustawieniach konfiguracyjnych związanym z czasem response, itp. Pliki np. php.ini i tego typu.

php.net php.net php.net

Wyjaśnij może w jaki sposób dane ściągasz metodą POST, Ajax'em, czy czymś innym.

You can decide whether or not you want a client disconnect to cause your script to be aborted. Sometimes it is handy to always have your scripts run to completion even if there is no remote browser receiving the output. The default behaviour is however for your script to be aborted when the remote client disconnects. This behaviour can be set via the ignore_user_abort php.ini directive as well as through the corresponding php_value ignore_user_abort Apache httpd.conf directive or with the ignore_user_abort() function. If you do not tell PHP to ignore a user abort and the user aborts, your script will terminate. The one exception is if you have registered a shutdown function using register_shutdown_function(). With a shutdown function, when the remote user hits his STOP button, the next time your script tries to output something PHP will detect that the connection has been aborted and the shutdown function is called. This shutdown function will also get called at the end of your script terminating normally, so to do something different in case of a client disconnect you can use the connection_aborted() function. This function will return TRUE if the connection was aborted.

php.net

Ustaw w php.ini właściwość ignore_user_abort na ;ignore_user_abort. Po prostu wstaw tam średnik (wykomentuj) tę linię. Cytat mówi, że można tym kierować za pomocą httpd.conf lub z poziomu kodu PHP.

php.net php.net php.net php.net php.net

w pętli wykonuja się dwa zapytania

delete oraz insert, sytuacja jest taka że muszą się wykonywać pokolei czyli każde zapytania na każdym z 300 elementów tablicy

Pakietami ślij dane do pliku, nie po kolei jeśli możesz, ponieważ za długo to trwa, zgodnie z tym co opisujesz. Jest instrukcja mysqli::multi_query, która wykonuje grupowo zapytania SQL, żeby nie były wykonywane jedna po drugiej.

komentarz 14 lipca 2019 przez niezalogowany
edycja 14 lipca 2019
w pętli wykonuja się dwa zapytania

delete oraz insert, sytuacja jest taka że muszą się wykonywać pokolei czyli każde zapytania na każdym z 300 elementów tablicy

no tak, czas odpowiedzi ale mimo wszystko skrypt w tle sie wykonuje mimo że w przeglądarce już nie, tego nie rozumiem
/////
 @edit

 

zrobilem dodatkowy test, wcisnalem przycisk w formularzu i zamknąłem karte w przeglądarce, skrypt nadal sie wykonuje - widać po logach :O

Dane ściągam post'em

Podobne pytania

0 głosów
1 odpowiedź 160 wizyt
pytanie zadane 14 marca 2016 w PHP przez GaCeL Dyskutant (7,500 p.)
+1 głos
1 odpowiedź 509 wizyt
0 głosów
2 odpowiedzi 211 wizyt
pytanie zadane 7 października 2020 w Python przez Dawid Popławski Nowicjusz (160 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...