Gustl: das hat jetzt mit dem threadtitel nicht mehr viel am hut

Beitrag lesen

ich habs hingebogen, aus codeschnipseln die ich gefunden habe etc. in der schleife kann ich nun nüsse knacken oder sonstwas, halt sachen machen die lang dauern und ich hab ne rückmeldung. durch das 100-malige schreiben der datei ist das script so langsam, dass man es testen kann :-) wenn $start sehr gross ist, würde ich die datei nicht bei jedem durchlauf schreiben, sondern vielleicht nur alle 20 mal oder so. das würde auch reichen.

wer kann denn bitte mit fachmännischem auge da nochmal hinkucken?

############## HTML ################

<!DOCTYPE html><html><head><title>Prozesstest</title>  
<style type="text/css">  
  body { background-color: #FFFFFF; font-family: Verdana,Arial,sans-serif; font-size: small; color: #000000 }  
  #aussen { border: 1px solid #000000; height: 16px; display: block; background-color: #DDDDDD }  
  #innen { background-color: #00FF00; border-right: 1px solid #000000; height: 16px }  
</style>  
</head><body>  
  
  <div id="fortschritt" style="display: none; width: 400px; margin: auto">  
    <fieldset>  
      <legend>Fortschritt in Echtzeit</legend>  
      <div id="aussen">  
        <div id="innen" style="width: 0%"></div>  
      </div>  
      Stueck: <span id="stueck">0</span>/<span id="alle">0</span> (<span id="prozent">0</span>%)  
    </fieldset>  
  </div>  
  
  <div id="machmal" style="display: block; width: 400px; margin: auto">  
  
  <fieldset>  
    <legend>Prozess starten</legend>  
  
    <form action="/cgi-bin/test.cgi" method="post" onSubmit="return start()" id="formular">  
    <input type="hidden" name="do" value="los"><input type="hidden" name="sessid" id="sessid">  
  
    <table border="0" cellspacing="0" cellpadding="2"><tr><td align="center">  
      <select name="startwert">  
        <option value="250">Mach es 250 mal</option>  
        <option value="500">Mach es 500 mal</option>  
        <option value="1000">Mach es 1000 mal</option>  
      </select>  
	  <input type="submit" value="Starten">  
    </td></tr></table>  
	</form>  
  </fieldset>  
  
  </div>  
  
  
[code lang=javascript]<script type="text/javascript">  
  
function $(o) { return document.getElementById(o); }  
  
function init() {  
        var hex = [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F" ]; var ses = "";  
        for (var i = 0; i < 8; i++) { var rnd = Math.floor(Math.random()*16); ses += hex[rnd]; }  
        $("sessid").value = ses; $("formular").action += "?" + ses; } window.onload = init;  
  
function start() {  
        $("machmal").style.display = "none";  
        $("fortschritt").style.display = "block";  
        setTimeout("ping()", 500); return true; }  
  
function ping() {  
        var ajax = new XMLHttpRequest();  
        ajax.onreadystatechange = function () { if (ajax.readyState == 4) { parse(ajax.responseText); } };  
        ajax.open("GET", "../cgi-bin/test.cgi?do=ping&sessid=" + $("sessid").value + "&rand=" + Math.floor(Math.random()*99999), true);  
        ajax.send(null); }  
  
function parse(txt) {  
		var parts = txt.split(":");  
        if (parts.length == 3) {  
                $("stueck").innerHTML = parts[0];  
                $("alle").innerHTML = parts[1];  
                $("prozent").innerHTML = parts[2];  
                $("innen").style.width = parts[2] + "%";  
        }  
        setTimeout("ping()", 500); }  
		  
</script>

</body></html>[/code]

############## CGI ################

#!/usr/bin/perl -w  
  
use strict;  
use warnings;  
use CGI;  
use CGI::Carp "fatalsToBrowser";  
  
my $q 	= 	new CGI;  
  
print "Content-Type: text/html\n\n";  
  
my $action 		= $q->param("do") 			|| "kein_wert";  
my $start 		= $q->param("startwert") 	|| "kein_wert";  
  
if ($action eq "los")  
{  
    my $sessid 	= 	$q->param("sessid");  
	$sessid 	=~ 	s/[^A-F0-9]//g;  
	my $prozent;  
  
    for (my $i=0; $i <= $start; $i++)  
	{  
      $prozent	= 	int ( ($i / $start ) * 100);  
	  open 	(SES, 	">../sess/$sessid.session");  
	  print SES 	"$i:$start:$prozent";  
	  close (SES);  
	}  
  
    unlink	("../sess/$sessid.session");  
	print 	"Fertig <a href=\"../test.htm\">Nochmal</a>";  
}  
  elsif ($action eq "ping")  
{  
  my $sessid 	= 	$q->param("sessid");  
  $sessid 		=~ 	s/[^A-F0-9]//g;  
  
  if (-f 		"../sess/$sessid.session")  
  {  
    open (READ, 	"../sess/$sessid.session");  
	my $data 		= <READ>;  
	close 			(READ);  
	print $data;  
  }  
  else  
  {  
    print "sessiondatei nicht gefunden";  
  }  
}  
  else  
{  
  print "falscher wert action";  
}