Hoe voorkom ik 1000x refresh per seconde?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Rene Zwolsman

Rene Zwolsman

26/04/2011 18:17:34
Quote Anchor link
Afgelopen weekend heeft een of andere lolbroek voor flink wat dataverkeer gezorgd door binnen korte tijd enkele duizenden keren mijn website op te vragen. De website haalt veel gegevens (met vervolgberekeningen) uit mijn database en dus wordt deze bij elke view of refresh belast. En als dat tig keer per seconde gebeurt wordt mijn webhost dus boos (zoals gisteren...).

Hoe kan ik dit voorkomen? Omdat de site 1x per minuut wordt bijgewerkt (gegevens mbt het weer) heeft het voor een bezoeker geen zin om vaker dan 1x per minuut de gegevens opnieuw uit de database te halen . Is PHP-sessies hier de oplossing voor? En zo ja, wat sla ik dan op in een sessie?
 
PHP hulp

PHP hulp

05/12/2020 15:45:30
 
- Mark -

- Mark -

26/04/2011 18:47:15
Quote Anchor link
Als de berekeningen zo zwaar zijn dan kun je het beter zo maken dat de pagina die alles weer geeft statisch is. Je kunt deze laten genereren en opslaan nadat je de database hebt bijgewerkt.
 
- Ariën -
Beheerder

- Ariën -

26/04/2011 19:37:40
Quote Anchor link
In een database opslaan hoevaak iemand de site bezoekt. Als dit vaker dan 100 keer per minuut is dan geef je hem een mooie IP-ban.
 
Roger Keulen

Roger Keulen

26/04/2011 19:51:21
Quote Anchor link
Caching...

HTML 304 (Not Modified)
http://www.w3.org/Protocols/rfc2616/rfc2616.html


Je kunt een soort ID meegeven met je responce die krijg je bij een refresh terug, en kun je kijken of hij veranderd is. Zo niet geef je een 304 terug.
Dit werkt zeer handig bij plaatjes die op je server staan. Je kunt de mod_date in de ID zetten, en als je een refresh hebt met een ID dan check je de mod_date van het bestand. Is hij niet gewijzigd hoef je het bestand niet nog eens te verzenden. (kost je minder geld dan...)

maar je kunt het beste kijken bij:

http://nl.php.net/manual/en/function.session-start.php

Voor het starten van je sessie, en dan:

http://nl.php.net/manual/en/reserved.variables.php
http://nl.php.net/manual/en/reserved.variables.session.php

Voor je ARRAY waar je gegevens in op kunt slaan, bv:

$_SESSION["GEBRUIKER"] = .....New User();
of
$_SESSION["SYSTEEM"] = array();
$_SESSION["SYSTEEM"][GEBRUIKER] = $GEBRUIKER;

en met array_key_exists("Zoeken", $_SESSION) kun je kijken of hij al bestaat...


Veder kun je beter geen complexe SQL af vuren. En als je dat doet 'bewaar' het resultaat in een file.

Groetjes: Lucifer
 
Rene Zwolsman

Rene Zwolsman

26/04/2011 20:58:05
Quote Anchor link
Ik denk dat ik voorlopig voor het cachen ga aangezien ik geen IP-ban kan uitdelen en de sessies me nog boven de pet gaan.

Ik wil dit met de volgende code doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php ob_start() ?>


blablabla

$cachefile = "index.html";
$fp = fopen($cachefile, 'w');
fwrite($fp, ob_get_contents());
fclose($fp);
ob_end_flush();

En door te controleren hoe oud het cachebestand is (wel of niet ouder dan bv 1 minuut), wel of niet de statische pagina weer te geven. Is dit een goede oplossing?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.