Ik zou enorm graag het aantal bezoekers op mijn site limiteren. Zodat er bijvoorbeeld maar 50 man tegelijk op de site kunnen komen. Ik vroeg me af of iemand daar een script/voorbeeld voor weet hoe ik dat aan moet pakken? Ik heb onder andere op Hotscripts en hier gekeken, maar ik kon helaas niks vinden wat er op lijkt.


Waarom?

Ik stream regelmatig en ik kan voor vanavond (te) veel mensen verwachten waardoor de stream het waarschijnlijk niet houd. De stream kan je alleen kijken vanaf mijn site en daarom wil ik graag een limiet op mijn site zetten.

Ik zat te kijken naar de Flood scripts/Max Page Views hier maar het is toch net iets anders.. Helaas heb ik weinig tot geen ervaring met php scripts maken en ik heb dus geen idee wat ik moet doen.

Alvast héél erg bedankt ;)
Hij geeft nu onderaan een foutmelding als:
Warning: fopen() expecs parameter 2 to be string, resource given in /home/www/pagavoetbal.freehostia.com/test.php

Hij laat in ieder geval wél de pagina ;)

Dat gaat denk ik over de online.txt?
omg, vandaag niet m'n dag, moet fwrite zijn..

<script>
function update() {
    online = document.open('text/html', 'online.txt');
    new = online - 1;
    document.write(new);
}
</script>
<?php
    $max = 50; // hier het maximum aantal invullen
    $online = fopen('online.txt', 'r+');
    if ($online >= $max) {
        echo 'Er zijn momenteel ' . $max . ' in de stream, dit is het maximum. U zult moeten wachten tot er een plaatsje vrij is. De pagina zal automatisch vernieuwe om de zoveel seconde.<meta http-equiv="refresh" content="180" />';
    } else {
?>
<body onUnload="update()"><!-- hier stream plaatsen --></body>
<?php
    fwrite('online.txt', $online++);
    }
?>
Warning: fwrite(): supplied argument is not a valid stream resource in <b>/home/www/pagavoetbal.freehostia.com/test.php</b> on line <b>34</b><br />

In ieder geval al heel erg bedankt voor de moeite.

Meestal heeft dat toch met "permission" te maken?
Ik heb online.txt in ieder geval 777 meegegeven...
Bij een goede stream kan je een limiet aan bezoekers instellen.
Jonathan schreef op 20.10.2007 12:04
Bij een goede stream kan je een limiet aan bezoekers instellen.

Probleem is dat ik géén goede streamhost heb ;).
Van de code die Tommy geeft klopt niet heel veel. De functies fopen() en fwrite() geven namelijk een resource terug een geen aantallen. Kijk maar eens op php.net hoe je hiermee moet werken...

Verder zou ik ervoor kiezen om een database te gebruiken. Op die manier kun je heel eenvoudig bijhouden welke bezoekers je site bezocht hebben. Maak een tabel aan waarin je alle ip-adressen per bezoek opslaat, gekoppeld aan een tijdstip:

visits
------
id (INT)
ip_adres (VARCHAR)
tijdstip (DATETIME)

Als een bezoeker je website bezoekt controleer je eerst of het aantal actieve bezoekers in zeg de laatste 5 minuten niet boven de 50 ligt:

SELECT COUNT(*)
FROM visits
WHERE MINUTE(TIMEDIFF(NOW(), tijdstip)) < 5

Als dat zo is, weiger je de bezoeker. Is dat niet zo, dan voeg je een nieuw record toe in de database met zijn ip adres en het tijdstip.

Het enige probleem dat je hier houdt (maar dat je ook hebt als je met txt bestanden werkt), is dat je database alleen geupdate wordt als een pagina bezocht wordt. Als de stream eenmaal loopt en alle 50 gebruikers kijken langer dan 5 minuten, kan het zijn dat er na die 5 minuten ineens meer dan 50 gebruikers zijn.
Paul Kemper schreef op 20.10.2007 12:06
[quote='Jonathan schreef op 20.10.2007 12:04']Bij een goede stream kan je een limiet aan bezoekers instellen.

Probleem is dat ik géén goede streamhost heb ;). [/quote]Oplossing is dat je wel een goede streamhost neemt xD
Blanche schreef op 20.10.2007 12:16
Van de code die Tommy geeft klopt niet heel veel. De functies fopen() en fwrite() geven namelijk een resource terug een geen aantallen. Kijk maar eens op php.net hoe je hiermee moet werken...

Verder zou ik ervoor kiezen om een database te gebruiken. Op die manier kun je heel eenvoudig bijhouden welke bezoekers je site bezocht hebben. Maak een tabel aan waarin je alle ip-adressen per bezoek opslaat, gekoppeld aan een tijdstip:

visits
------
id (INT)
ip_adres (VARCHAR)
tijdstip (DATETIME)

Als een bezoeker je website bezoekt controleer je eerst of het aantal actieve bezoekers in zeg de laatste 5 minuten niet boven de 50 ligt:

SELECT COUNT(*)
FROM visits
WHERE MINUTE(TIMEDIFF(NOW(), tijdstip)) < 5

Als dat zo is, weiger je de bezoeker. Is dat niet zo, dan voeg je een nieuw record toe in de database met zijn ip adres en het tijdstip.

Het enige probleem dat je hier houdt (maar dat je ook hebt als je met txt bestanden werkt), is dat je database alleen geupdate wordt als een pagina bezocht wordt. Als de stream eenmaal loopt en alle 50 gebruikers kijken langer dan 5 minuten, kan het zijn dat er na die 5 minuten ineens meer dan 50 gebruikers zijn.

Bedankt!, ik zal iets proberen.

/edit, bedankt voor de moeite maar ik heb een alternatief gevonden. Ik zal alleen mensen op aanvraag toelaten (via IP). Een beetje omslachtig maar waarschijnlijk wel de veiligste manier..

Reageren