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

Object Storage Arubacloud
0 głosów
103 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ź 166 wizyt
pytanie zadane 14 marca 2016 w PHP przez GaCeL Dyskutant (7,500 p.)
+1 głos
1 odpowiedź 528 wizyt
0 głosów
2 odpowiedzi 214 wizyt
pytanie zadane 7 października 2020 w Python przez Dawid Popławski Nowicjusz (160 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...