Hab da paar tools die in while-Schleifen laufen.
Da man ja aber ohne Pausen die CPU ins endlose jagen würde, hab ich Pausen eingebaut.
Einfache Pause kommt aber nicht in Frage, denn die work kommt wann sie will.
Ich kann also nicht sagen: usleep(1000), denn innerhalb der Zeit kann schon wieder Arbeit in der Warteschlange hängen.
Also hab ich versucht ein "Schalf solange, bis zu feststellst, dass Du was zu tun hast" - zu schreiben.
Das funktioniert auch. Nur suche ich gerade nach Alternativen/Verbesserungen.
Einfaches Bsp:
$work_1 = false;
$work_2 = array();
$work_3 = array();
while(true){
for($i = 10, $usec = 1000000/$i; $i > 0; $i--){
// work_1
$work_1 = machDies();
// work_2
$work_2 = machDas();
// work_3
$work_3 = machNochWas();
if(
$work_1 === true
or !empty($work_2)
or !empty($work_3)
){
break;
}
usleep($usec);
}
// ... hier gehts dann ans abarbeiten ...
}
Alles anzeigen
Das Problem momentan: wenn es mal richtig "los geht", dann würde das Script gar keine Pause brauchen.
Es würde bei Vollast also schneller laufen, zu gemütlichen Zeiten aber sinnlos CPU verbrennen.
Jemand damit Erfahrung? Ideen? =)
EDIT: der Unterschied bei Vollast ist enorm: mit der for-Schleifenpause nur halb so schnell.
Und das obwohl die for-Schleife nur einmal durchlaufen wird und nicht bis zum usleep kommt.
Hab sogar goto getestet - wird aber auch nicht schneller =)