momenteel ben ik bezig met een IRC botje dat, in tegenstelling tot de vele PHP botjes die worden aangeboden, elke seconde in een MySQL tabel kijkt en dan pas de informatie van de socket binnenhaalt.
Het eerste probleem was dat hij natuurlijk oneindig in de while loop van de socket bleef, dit heb ik opgelost met een simpele break, alleen nu zit ik er weer mee dat hij automatisch in die loop terecht komt ook al is er nog geen nieuwe data aangekomen en ik heb geen idee hoe ik een controle kan doen of er wel nieuwe data is voor hij in de while loop terecht komt.
Dit heb ik momenteel:
$start_tijd = time();
while($core = mysql_fetch_array(mysql_query("SELECT * FROM `core`"))) {
while($data = socket_read($socket,6500,PHP_NORMAL_READ)) {
echo "[RECEIVE] ".date('H:i:s')." ".$data."<br />\r";
$eData = explode(" ",$data);
for($i = 0; isset($eData[$i]); $i++) {
$eData[$i] = trim($eData[$i]);
}
if($data == "<br>") continue;
$eData = explode(" ",$data);
for($i = 0; isset($eData[$i]); $i++) {
$eData[$i] = trim($eData[$i]);
}
if($eData[0] == 'PING') {
//Ping
schrijf('PONG '.$eData[1]);
}
break;
}
if(time() > $start_tijd + 5) {
usleep(500000);
}
}Bij voorbaat dank.
- JG