We proberen de kwaliteit van onze kennisbank voortdurend te verbeteren.
Geef de informatie op deze pagina een waardering met de slider hierboven.
Timeouts Voorkomen
Hier vindt u een aantal tips over het ontwikkelen van webapplicaties.
Hoe voorkom ik browser timeouts?
Stel dat u een server-intensieve applicatie heeft gemaakt, die bijvoorbeeld grote hoeveelheden email verzendt. Deze applicatie kan daar best langer over doen dan 30 seconden. Maar als de browser meer dan 30 seconden geen data krijgt van de webserver, neemt deze aan dat er een probleem is opgetreden en geeft een timeout melding. Is uw script dus lang bezig, stuur dan altijd tussendoor een status update naar de browser (bijvoorbeeld: "30% klaar").
Een valkuil is dat uw script mogelijk standaard gebruikt maakt van buffering, oftewel het tijdelijk bewaren van data om deze later in grote blokken naar de browser te kunnen sturen. Door deze buffering zou het alsnog langer dan 30 seconden kunnen duren voordat de browser iets ontvangt.
- In Perl kunt u buffering uitzetten door in uw script "$| = 1" aan te roepen. Of "use English; $AUTOFLUSH = 1;"
- In PHP kunt u buffering uitzetten door geen gebruik te maken van de ob_handler.
Hoe voorkom ik server timeouts?
Als uw webbrowser niet na dertig seconden een timeout geeft, kan ook de webserver een timeout geven als het script meer dan vijf minuten geen uitvoer heeft gegeven. Dan krijgt u een foutcode 500 of 504. Ook dit is te verhelpen door tussentijds wat uitvoer te genereren.
Een andere vorm van timeout kan optreden doordat de server een tijdslimiet forceert op uitgevoerde scripts. Deze tijdslimiet is bij Byte ingesteld op 60 CPU seconden. Dit zijn volle seconden dat de server voor 100% aan het rekenen is. In de praktijk is de werkelijke tijdslimiet veel langer, omdat de webserver niet continue 100% aan het script aan het rekenen is (bijvoorbeeld wanneer er gewacht moet worden op een database-query, een externe site of een ander script).
Deze limieten zult u niet snel bereiken, tenzij u pi uit wilt rekenen tot duizenden getallen na de komma, of tienduizenden mails wilt versturen. Wilt u toch intensieve opdrachten uit laten voeren via een webrequest, dan kunt u het beste de taak ophakken in kleinere opdrachten en deze serieel laten uitvoeren. U kunt bijvoorbeeld een script eerst 100 mail laten versturen en als deze klaar is met een javascript:location() of meta refresh aanroep de pagina laten verversen om de volgende 100 mail te verzenden.
Nog niemand heeft een waardering kenbaar gemaakt voor dit artikel- Deze pagina is het laatst bewerkt op 29 nov 2011 om 16:25.
- Deze pagina is 359 keer bekeken.