[PHP] Wat gebeurt er met het script als de browser sluit?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Sourcey
  • Registratie: Januari 2005
  • Laatst online: 10-09 15:31
Hallo,

Ik vraag me af wat PHP doet als de gebruiker zijn browser afsluit. Stel ik zit in een enorme while loop die een mailinglist e-mail naar 10.000 mensen stuurt en ik sluit het venster nadat ik het script start: gaat PHP dan vrolijk door? En if not, hoe zorg ik ervoor dat hij doorgaat?

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Dit kun je gewoon zelf uitproberen door een while te schrijven die heel lang doorgaat en na afloop daarvan iets naar een file schrijft. Als je je browser afsluit en je later kijkt of die file de tekst bevat die je verwacht dan weet je toch genoeg?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • joggie
  • Registratie: November 2004
  • Laatst online: 03-02 15:00

joggie

Wie niet gek is, is saai

goeie vraag :)

volgens mij gaat het script sowieso nooit langer door dan de script-execution time in je php.ini

Joggie ;)


Acties:
  • 0 Henk 'm!

  • TUX2K
  • Registratie: September 2001
  • Laatst online: 17-09 12:46
Aangezien, je browser niet aan de webserver verteld dat de gebruik het scherm heeft gesloten gaat het script dus gewoon door.

Acties:
  • 0 Henk 'm!

  • kamerplant
  • Registratie: Juli 2001
  • Niet online
Als je het script via de browser oproept zal het script vroegtijdig stoppen nadat de user zijn stop knopje heeft aangeraakt. Om te voorkomen dat het script vroegtijdig stopt zijn er twee functies beschikbaar in PHP.
Test het wel even na voor de zekerheid ;)
edit:
Nu zo helemaal na wat TUX2K zegt :+


http://nl3.php.net/manual/nl/function.ignore-user-abort.php
http://nl3.php.net/manual/nl/function.set-time-limit.php

[ Voor 23% gewijzigd door kamerplant op 25-04-2006 09:51 ]

🌞🍃


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
De uitvoer van het script wordt dan gestopt.
Je kunt forceren dat het script doordraait tot deze klaar is met ignore_user_abort(true);

[ Voor 15% gewijzigd door frickY op 25-04-2006 09:52 ]


Acties:
  • 0 Henk 'm!

  • Fles
  • Registratie: Augustus 2001
  • Laatst online: 06-04-2023
Ik heb een server keurig ingericht, met sms systeem over resources als die critical zouden worden. Een time-limit van een half uur en een script met een ietsie pietsie klein foutje, waardoor hij ietsje langer dan normaal in een loop bleef (lees: endless).

Ik debuggen en dat script draaien, maar mooi dat ik TIG smsjes kreeg over critical resources op de server ;) Na een half uur was het netjes afgelopen... Je script blijft dus gezellig doordraaien als je je browser sluit.

Acties:
  • 0 Henk 'm!

Verwijderd

TUX2K schreef op dinsdag 25 april 2006 @ 09:46:
Aangezien, je browser niet aan de webserver verteld dat de gebruik het scherm heeft gesloten gaat het script dus gewoon door.
Bij het downloaden van de HTML/data is er natuurlijk een verbinding, deze word afgebroken zodra de client word afgesloten of naar een andere pagina surft.

Dit geeft een 'user abort' event.

Zie de functies hierboven.

[ Voor 7% gewijzigd door Verwijderd op 25-04-2006 10:56 ]


Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Verwijderd schreef op dinsdag 25 april 2006 @ 10:40:
[...]

Bij het downloaden van de HTML/data is er natuurlijk een verbinding, deze word afgebroken zodra de client word afgesloten of naar een andere pagina surft.

Dit geeft een 'user abort' event.

Zie de functies hierboven.
Een PHP-pagina hoeft nog geen uitvoer te genereren wanneer het uitgevoerd wordt, en als het dan in een loop zit zoals hier boven beschreven wordt... :)

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

Verwijderd

Nee maar de client moet wel eerst een request doen om het script te starten en dus een verbinding maken die je kunt disconnecten (user abort).

Of het phptje enige output maakt is dus niet van belang.
Pagina: 1