lus met pauze
Ik heb een logbestand waarin geschreven wordt op het moment dat er iemand in mijn chatbox komt. Is er niemand, dan is het logbestand leeg.
Nu wil ik dat als er iemand de chatbox inkomt ik een waarschuwingssignaal krijg in de vorm van geluid.
Hier ben ik in zoverre in geslaagd dat er op zich wel een geslaagde beoordeling en afhandeling plaatsvindt, echter maar 1 keer.
Daarentegen wil ik voortdurend op de hoogte gehouden worden. Ik heb dit geprobeerd te bereiken met een oneindige while-lus, echter werkt dit niet. Mijn computer moet dan waarschijnlijk zo hard werken dat deze niet eens tijd heeft enige output te geven (mijn systeem wordt uiterst traag), behalve dan na 30 seconden, wanneer mijn systeem zelf met een error-bericht aan de noodrem trekt.
Dus dacht ik vervolgens aan een kleine vertraging in te bouwen voor elke herhaling van de lus.
Ik weet dat ik dit (lang geleden) eerder heb gedaan met JavaScript, maar heb geen idee meer hoe dat ging. Bovendien is JavaScript natuurlijk niet het zelfde als PHP.
Kan iemand mij aan de hand van onderstaand script uitleggen hoe ik dit het beste kan doen?
(Het begin en eind van waar de lus moet plaatsvinden heb ik aangegeven met commentaarregels.
Met o.a. de toevoeging en bewerking van [$geheugen] probeer ik te bereiken dat ik alleen een geluidsignaal te horen krijg als er iets aan het logbestand wordt toegevoegd en niet al toegevoegd is.)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$bewaar=1;
/* begin herhalingslus */
$fopen = fopen("data/usr","r");
$data = fgets($fopen, 45);
$len = strlen($data);
if (($len > 1) && ($len > $geheugen))
{
echo ("<script>document.write('<object type=\"application/x-shockwave-flash\" data=\"msg.swf\" width=\"1\" height=\"1\"><param name=\"movie\" value=\"msg.swf\"></object>');</script>");
}
fclose ($fopen);
$len = $geheugen;
/* einde herhalingslus. Vanaf dit punt wil ik een vertraging van enkele seconden inbouwen voordat er terug wordt gekeerd naar het begin van de herhalingslus */
?>
$bewaar=1;
/* begin herhalingslus */
$fopen = fopen("data/usr","r");
$data = fgets($fopen, 45);
$len = strlen($data);
if (($len > 1) && ($len > $geheugen))
{
echo ("<script>document.write('<object type=\"application/x-shockwave-flash\" data=\"msg.swf\" width=\"1\" height=\"1\"><param name=\"movie\" value=\"msg.swf\"></object>');</script>");
}
fclose ($fopen);
$len = $geheugen;
/* einde herhalingslus. Vanaf dit punt wil ik een vertraging van enkele seconden inbouwen voordat er terug wordt gekeerd naar het begin van de herhalingslus */
?>
$bewaar=1;
moet zijn
$geheugen =1;
wat jij wil is een lus waar af en toe 2 sec. tussen zit en vervolgens weer laten denken, 2sec. weer laten denken etc. Ik kan je nu al vertellen, dat dit zo traag is dat je het niet eens wil want hij is constant bezig, dat trektie ook niet...
wat je wel kunt doen, (zover je dit kunt gebruiken) is een tijd bijhouden oid en als er wat gedaan wordt de huidige tijd matchen met de bijgehouden tijd, misschien levert dat je iets op?! ik raad je de oneindige met interval lus af iig, maar je mag het altijd nog zelf ondervinden als je het toch wil.. :) laat ff horen wat je gaat doen ben wel benieuwd
Mss een ifje en dan de page elke 10 secs refreshen ipv die loop?
Quote:
wat je wel kunt doen, (zover je dit kunt gebruiken) is een tijd bijhouden oid en als er wat gedaan wordt de huidige tijd matchen met de bijgehouden tijd, misschien levert dat je iets op?!
Dit lijkt me uitstekend!
Ook dit heb ik lang geleden ooit met JavaScript gedaan, maar helaas ook vergeten hoe dat moet. Ik zal weer effe moeten gaan zoeken.
Quote:
Mss een ifje en dan de page elke 10 secs refreshen ipv die loop?
Deze optie valt af, aangezien ik wil dat bepaalde waarden onthouden worden, zodat als er iemand in de chatbox is er niet om de seconde een bel klinkt aangezien hij bij controle steeds weer opnieuw ontdekt dat er iemand is.
Dat kun je in een sessie, koekje of file zetten ...
Quote:
Dat kun je in een sessie, koekje of file zetten ...
Ja, dat is waar. Alleen ben ik bang dat ik voor de optie sessie en cookie nog een tijdje moet doorleren, want daar heb ik werkelijk nog geen kaas van gegeten. Ik weet niet eens wat "sessie" betekent. Een functie? Zoals onder?
functie()
{
whatever...
}
En die gebruik je zo:
Ik neem aan dat die waarde dan in de MySQL-database wordt opgeslagen?