Countdown-Javascript während php-shell_exec ausführen

jan

jan

Aktives Mitglied
Thread Starter
Dabei seit
03.06.2003
Beiträge
1.908
Reaktionspunkte
86
Moin,

ich bin gerade dabei, einen einfach Brennserver zu realisieren. Die Leute sollen in ein Verzeichnis ihren Krempel schmeißen können und dann per Web-Interface wahlweise eine CD oder DVD brennen. Das ganze läuft auf einer Debian-Maschine.

Das funktioniert soweit auch funktional bereits ganz gut, nur ists halt unschön, dass die php-Lösung es unmöglich macht, während der Ausführung einen gewissen Fortschritt rückzumelden. Meine Idee: Aus Größe des Images und Brenngeschwindigkeit die Dauer ermitteln und während der php-Befehl ausgeführt wird einen Countdown ausgeben. Nie 100% akkurat, aber immerhin etwas. Nur: Wie realisiere ich das?

Bisheriger Code:
PHP:
<?php
$size = shell_exec('du -s cd_image.iso');
$size = (int)$size;
$size = substr($size,0,7);
if ($size > 698000) {
echo "Verzeichnis zu groß, Inhalte löschen oder DVD brennen";
} else { 
echo "Verzeichnis kann gebrannt werden </br>"; }
$output_size = $size / 1024;
$dauer_min = $size / 177 / 60;
$dauer_sek = floor($size / (177 * 24) );
echo "".$dauer_sek." Sekunden"; 
echo "$output_size MB";
?>

    <script language="JavaScript">

var lngSekunden = <?php echo $dauer_sek; ?>;

function secondCount(){
  // Stunden berechnen
  intStunden = Math.floor(lngSekunden/(60*60));
  // Stunden formatieren
  intStunden = (intStunden < 10) ? "0"+intStunden : intStunden;
  // Restsekunden berechnen
  lngHelpSekunden = lngSekunden - intStunden*60*60;

  // Minuten berechnen, formatieren und Restsekunden berechnen
  intMinuten = Math.floor(lngHelpSekunden/60);
  intMinuten = (intMinuten < 10) ? "0"+intMinuten : intMinuten;
  intSekunden = lngHelpSekunden - intMinuten*60;

  // Sekunden formatieren
  intSekunden = (intSekunden < 10) ? "0"+intSekunden : intSekunden;

  // Ausgabestring generieren
  strZeit = intMinuten + ":" + intSekunden;

  // Ausgabestring in DIV mit ID="countdownID" schreiben
  document.getElementById("countdownID").innerHTML = strZeit;

  // Sekunden dekrementieren
  lngSekunden--;
  // Falls der Countdown noch nicht zurückgezählt ist
  if(lngSekunden >= 0)
    // Countdown-Funktion erneut aufrufen
    window.setTimeout("secondCount()", 1000);
}
    </script>
	<body onload="secondCount();">
  <div id="countdownID"></div>
</body>
  
</body>

und der eigentliche Befehl wäre:

PHP:
<?php
shell_exec('mkisofs -U -J -R -f -o cd_image.iso /cd_brennen/ & cdrecord -eject dev=/dev/hdd cd_image.iso' ); 
?>


Vielen Dank schonmal für die Hilfe!
 
Zurück
Oben Unten