Befehl wie gesucht oder function

beyoNd

Mitglied
Hallo *,

ich will eine Batch-Datei mit PHP ausführen.
Soweit so gut
Gibt es die möglichkeit, das ich direkt die Zeile ausgeben kann welche das Batch-File zurückgibt, sprich so wie in der Console.
Sodass ich diese dann per Ajax-Request und JS direkt in meine TextArea schreiben kann und so eine art (liveTime; direkte) "Consolen" ausgabe habe...


Ich hoff ihr versteht was ich meine... :D

lg beyoNd
 
Auf dem Server :)

ich wil nur die "echo's" direkt anzeigen lassen OHNE zu warten das der Prozess GANZ durchlaufen ist.

lg
 
Hm. keien Ahnung ob es irgendwei über Stream geht. Hab keine Erfahrung damit.
Du kannst es aber über Ajax mit 2 parallel laufenden Scripts machen

Hab da mal ein Test gemacht

exec.php: führt den Programm aus und schreibst anstelle von echo() die Log-Daten mit file_put_contents()in eine Datei
streamReader.php: Liest den Inhalt vom Log-File. ggf, kann man das auch mit Javascript machen - hab auf die Schnelle aber nicht herausgefunden wie.
streamAjax.html: Die Ausgabeseite mit dem Java-Zeugs. Einerseits startet man von hier das exec.php, anderseits hat es ein timer der die Log-Ausgabe jede Sekunde aktualisiert

exec.php
PHP:
<?php

define(C_FILE, 'stream.txt');

file_put_contents(C_FILE, "start\n", FILE_TEXT | LOCK_EX );
//15 Sekunden lang pro Sekunde ein Eintrag schreiben
for($i=0; $i<15; $i++){
    file_put_contents(C_FILE, "{$i}\n", FILE_APPEND | FILE_TEXT );
    sleep(1);
}
file_put_contents(C_FILE, "end", FILE_APPEND | FILE_TEXT );

?>


streamReader.php
PHP:
<?php
    define(C_FILE, 'stream.txt');
    echo nl2br(file_get_contents(C_FILE));
?>

Und die HTML-Datei
HTML:
<html>
<head>
<script language="JavaScript">
//timer der das Log neu ladet
var time = 1; //time in seconds
var interval = time * 1000;
var timer = setInterval("getLog('outputText');", interval);

//Get the HTTP Object
function getHTTPObject(){
    if (window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP");
    else if (window.XMLHttpRequest) return new XMLHttpRequest();
    else {
        alert("Your browser does not support AJAX.");
        return null;
    }
}
// Change the value of the outputText field
function setOutput(){
    if(httpObject.readyState == 4){
        document.getElementById(tagId).innerHTML = httpObject.responseText;
    }
}

function startProg(){
    httpObject = getHTTPObject();
    if (httpObject != null) {
        //php-Datei auf dem Server aufrufen
        httpObject.open("GET", "exec.php", true);
        httpObject.send(null);
    }	
}

// Implement business logic
function getLog(inTagId){
    httpObject = getHTTPObject();
    tagId = inTagId;
    if (httpObject != null) {
        //php-Datei auf dem Server aufrufen
        httpObject.open("GET", "streamReader.php", true);
        httpObject.send(null);
        httpObject.onreadystatechange = setOutput;
    }
}

var httpObject = null;
</script>
</head>
<body>
    <!-- hier wird die Scriptdatei eingebunden -->
    <script type="text/javascript" src="ajax_f1.js"></script>
    <div id="error">
    </div>
    <form name="testForm">
        <input type="button" onclick="startProg();" value="start"/>
        <br />
        <div id="outputText"></div>
    </form>
    <div id
</body>
</html>
 
Zurück