Hier ist der Code, der die arme CPU auf 100% Last trieb und angeblich auf
fast 60 Grad: (bei 60 fährt der Server runter)
(Ich gebe ja zu, dass ich php als Random-Generator missbraucht habe, aber ich brauche erstens prüf- und wiederholbare Sequenzen, zweitens habe ich so was schneller in php zusammengestrickt als in C++, drittens spielt die Zeit für die Erstellung keine Rolle, viertens läuft der Kram im .htaccess-geschütztem Bereich, fünftens MUSS der Apache der Owner des fertigen Files sein.)
Code:
PHP-Code:
<?php
// bingokarten:
$dpfad="/var/xxxxxxxxxxxxxxxxxxxxxxxxxx/"; // später mal extra-Verzeichnis
$filnam=$dpfad.'blue.csv';
set_time_limit(30);
// pattern einlesen:
$nzeilen=18; $nspalten=9;
$zeilen=file('bingo.patt');
for ($i=0; $i<$nzeilen; $i++)
{ $d=split(',',$zeilen[$i]);
for ($j=0; $j<$nspalten; $j++) $f[$i][$j]=intval($d[$j]);
}
for ($i=1; $i<=90; $i++) $arr[$i]=$i; // Zahlenvorrat
// ================================================================
for ($satz=0; $satz<100; $satz++)
{
do
{ echo "<br>Starte Satz - $satz :<br>";
mischen($arr,1,9);
for ($i=1; $i<8; $i++) mischen($arr,10*$i,10*$i+9);
mischen($arr,80,90);
$out='';
for ($i=0; $i<$nzeilen; $i++)
{ for ($j=0; $j<$nspalten-1; $j++) if ($f[$i][$j]==0) $out=$out.'0,'; else $out=$out.$arr[$f[$i][$j]].',';
if ($f[$i][$nspalten-1]==0) $out=$out."0\n"; else $out=$out.$arr[$f[$i][$j]]."\n";
}
echo $out;
}
while(dublette($filnam,$out)===true);
if ($fh=fopen($filnam,"a")) { fwrite($fh,$out); fclose($fh); }
echo "<br>Kartensatz $satz fertig<br>\n";
}
exit();
// ==============================================================================================================
function in_liste($e,$l) { $k=0; if (count($l)>1) for ($i=1; $i<=$l[0]; $i++) if ($e==$l[$i]) $k=$i; return $k; }
function add_liste($e,&$l) { if (in_liste($e,$l)<1) { $l[0]++; $l[$l[0]]=$e; } }
// ---------------------------------------------------------------------------------------------------------------
function mischen(&$a,$von,$bis)
{ for ($i=$von; $i<=$bis; $i++)
{ $k=rand($von,$bis);
$e=$a[$i]; $a[$i]=$a[$k]; $a[$k]=$e;
}
}
function dublette($infile,$neu)
{ $dub=false;
$zeilen=@file($infile);
if (count($zeilen)>1) for ($i=0; $i<count($zeilen); $i++) if (!$dub)
{ $a0[0]=0; $a1[0]=0; $z0=split(',',$neu); $z1=split(',',$zeilen[$i]); $dub0=true;
for ($j=0; $j<count($z0); $j++) if ($z0[$j]>0) add_liste($z0[$j],$a0);
for ($j=0; $j<count($z0); $j++) if ($z0[$j]>0) add_liste($z1[$j],$a1);
for ($j=0; $j<=$a0[0]; $j++) if ($a0[$j]!=$a1[$j]) $dub0=false;
if ($dub0) $dub=true;
}
return $dub;
}
?>
Apache-Daten kann ich leider nicht liefern, das hält der Admin geheim.
A propos Speicherfehler:
Spinnen die neueren CPUs ab 60 Grad tatsächlich schon rum? Die alte Amiga hat früher 3 Tage am Stück gelaufen, ohne aufzumucken.
so long,
BlueJay
Lesezeichen