<?php
ini_set
('error_reporting'E_ALL);
ini_set('display_errors'0);
ini_set('log_errors'1); 
ini_set('error_log''log.txt');
set_time_limit(0);
ini_set("memory_limit",9300000000);

echo 
"+-+-+-+-+-+-+-+-+-+-+-+-+
|0|p|7|!|0|n|1|!|5|7|0|r|
+-+-+-+-+-+-+-+-+-+-+-+-+
OptionLister 0.85
(c) MAX GROSSMANN 2010.\n\n\n"
;
$argv[4] = (!empty($argv[4])) ? $argv[4] : "";
if (
$argv[4] != "/range") {
$sep = (!empty($argv[2])) ? $argv[2] : "|";
$range explode($sep,$argv[1]);
$hmany $argv[3];
}
else {
$sep explode($argv[2],$argv[1]);
$range range($sep[0],$sep[1]);
$hmany $argv[3];
}
$prepy "foreach (\$range as \$e[0]) {\n#YY\n}";
$t =  "comp-".substr(md5(crypt(sha1(time()).time().rand(0,2500))),3,12).".txt";
$st $t.".php";
$str "";

function 
saveff($now) {
global 
$str;
global 
$t;
if (
rand(1,28)%7==0) echo $now."\n";
$fp fopen($t,"a");
fputs($fp,$str);
fclose($fp);
$str "";
}
$resSize number_format(round((pow(count($range),$hmany)*($hmany+1))/(1024*1024),4),2,",",".");
echo 
"In 4 Sekunden:\n";
echo 
"Moeglichkeiten:\t".pow(count($range),$hmany)."\nZeichen:\t".count($range)." [".implode(";",$range)."]\nStellen:\t".$hmany."\nSpeicherort:\t".$t."\n    Groesse: \t".number_format((pow(count($range),$hmany)*($hmany+1))/1024,2,",",".")."kB\n\n";
sleep(4);
$fp fopen($t,"a+");
$time[0] = time();
echo 
"Let's go! Es ist jetzt ".date("d.m.Y H:i:s")."\n";
echo 
"Generiere Ausfuehrungscode...\n";

for (
$i=1;$i<$hmany;$i++) {
if (
$i!=$hmany-4) {
$prepy str_replace("#YY","foreach (\$range as \$e[".$i."]) {\n#YY\n}",$prepy);
}
else {
$prepy str_replace("#YY","foreach (\$range as \$e[".$i."]) {\nsaveff(implode(\"\",\$e));\n#YY\n}",$prepy);
}
}

echo 
"Schritt 1 beendet. Starte jetzt Schritt 2...\n";
$prepy str_replace("#YY","\$str .= implode(\"\",\$e).\"\\n\";",$prepy);

$fs fopen($st,"w");
fputs($fs,"<?php\n$prepy\n?>");
fclose($fs);
echo 
"OK.\n\nWir beginnen nun mit der Berechnung. Das kann, je nach Ihrer Auswahl, einige Stunden dauern.\n\n";

include 
$st;
fputs($fp,$str);
unset(
$str);
$time[1] = time()-$time[0];
echo 
"\n\nVorgang komplett ohne Fehler beendet! Dauer: ".$time[1]." Sekunden, ".round($time[1]/60,2)." Minuten.";
fclose($fp);
unlink($st);
# sleep(30);
?>