kkmoslehpour Posted August 30, 2017 Share Posted August 30, 2017 I am working on outputting the console output to the user line by line. I have a page and based on user selection (radio buttons) it will run each script. I was looking at the PHP docs (http://php.net/manual/en/function.ob-flush.php) and there were saying that we have to call flush(); and ob_flush(); together to get the output to the webpage as it outputs to the console. I tried to do that but not getting any luck. I also tried adding the header( 'Content-type: text/html; charset=utf-8' ); Also no luck. I have the following function that can successfully output the stream, but it has to wait until the console is finished outputting to stdout before it displays on the webpage. I want it to output real-time. Is there a way to do this? Or am I doing something wrong? testexe.php if ($_SERVER['REQUEST_METHOD'] == 'POST'){ if ($connection = @ssh2_connect($gateway, 22)) { ssh2_auth_password($connection, $gwUser, $gwPwd); if(isset($_POST['option']) && $_POST['option'] == 1) { $stream = ssh2_exec($connection, "/home/mydirectory/myFirstScript.sh"); stream_set_blocking($stream, true); $stream_out = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO); $stream_err = ssh2_fetch_stream($stream, SSH2_STREAM_STDERR); while($line = fgets($stream_out)) {flush(); ob_flush(); echo '<pre>' . $line . '</pre>';} echo '<pre>' . "------------------------\n" . '</pre>'; while($line = fgets($stream_err)) {flush(); ob_flush(); echo '<pre>' . $line . '</pre>';} fclose($stream); } if(isset($_POST['option']) && $_POST['option'] == 2) { $stream = ssh2_exec($connection, "/home/mydirectory/mySecondScript.sh"); stream_set_blocking($stream, true); $stream_out = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO); $stream_err = ssh2_fetch_stream($stream, SSH2_STREAM_STDERR); while($line = fgets($stream_out)) {flush(); ob_flush(); echo '<pre>' . $line . '</pre>';} echo '<pre>' . "------------------------\n" . '</pre>'; while($line = fgets($stream_err)) {echo '<pre>' . $line . '</pre>';ob_flush();flush();} fclose($stream); } } } myPage.html <!DOCTYPE html> <html> <head> <style> .box1 form { width: 450px; border: 2px solid black; margin: 0; display: flex; } .col { display: inline-block; border-right: 2px solid black; padding: 5px; width: 200px; } .col:last-child { border-right: none; } input[type=text], select { width: 20%; padding: 12px 20px; margin: 8px 0; display: inline-block; border: 1px solid #ccc; border-radius: 4px; box-sizing: border-box; background-color: #ffffff; } </style> </head> <body> <div id="gatewayInput"> <form> <input type="text" id="gateway" name="gateway" action="testexe.php" method="POST" placeholder="Gateway Name"><br><br> </form> </div> <div class="box1"> <form method="post"> <label class="col">Up/Down</label> <span class="col"> <input type="radio" name="option" id="r1" value="1" /> <label for="r1">Up</label> <input type="radio" name="option" id="r2" value="2" /> <label for="r2">Down</label> </span> <span class="col"> <input type="submit" class="button"/> </span> </form> </div> <script src ="../../../jqueryDir/jquery-3.2.1.min.js"></script> <script type="text/javascript"> $(".button").click(function(event){ if ((document.getElementsByName("gateway")[0].value == '')) { alert('Gateway Required!'); return false; } else if (document.querySelectorAll('input[type="radio"]:checked').length < 1) { alert('Please Choose Up/Down Value!'); return false; } else { //alert('Sucess!'); event.preventDefault(); $.ajax({ url:"testexe.php", type: "POST", data: {option: $('input[type=radio]:checked').val()}, dataType: "text", success:function(result){ $('#div1').html(result) } }); return true; } }); </script> <div id="div1"></div> </body> </html> testexe.php if ($_SERVER['REQUEST_METHOD'] == 'POST'){ if ($connection = @ssh2_connect($gateway, 22)) { ssh2_auth_password($connection, $gwUser, $gwPwd); if(isset($_POST['option']) && $_POST['option'] == 1) { $stream = ssh2_exec($connection, "/home/mydirectory/myFirstScript.sh"); stream_set_blocking($stream, true); $stream_out = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO); $stream_err = ssh2_fetch_stream($stream, SSH2_STREAM_STDERR); while($line = fgets($stream_out)) {flush(); ob_flush(); echo '<pre>' . $line . '</pre>';} echo '<pre>' . "------------------------\n" . '</pre>'; while($line = fgets($stream_err)) {flush(); ob_flush(); echo '<pre>' . $line . '</pre>';} fclose($stream); } if(isset($_POST['option']) && $_POST['option'] == 2) { $stream = ssh2_exec($connection, "/home/mydirectory/mySecondScript.sh"); stream_set_blocking($stream, true); $stream_out = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO); $stream_err = ssh2_fetch_stream($stream, SSH2_STREAM_STDERR); while($line = fgets($stream_out)) {flush(); ob_flush(); echo '<pre>' . $line . '</pre>';} echo '<pre>' . "------------------------\n" . '</pre>'; while($line = fgets($stream_err)) {echo '<pre>' . $line . '</pre>';ob_flush();flush();} fclose($stream); } } } Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.