У меня есть оболочка оболочки. sh, которая выводит привет каждые 1 секунду. Я хотел бы отображать вывод моего сценария оболочки в реальном времени на моем веб-сайте в поле.
Однако проблема в том, что мой код не отображает вывод в поле. И когда я нажимаю на него, все исчезает, и я просто вижу белую страницу.
Ниже приведен мой php файл.
<code><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<form method="GET" action="splitter.php">
<label for="folderPath">Folder Path:</label>
<input type="text" id="folderPath" name="folderPath">
<br></br>
<fieldset id="khz">
<p>Please Choose Khz: </p>
<input type="radio" value="8khz" name="khz"> 8khz <br>
<input type="radio" value="16khz" name="khz"> 16khz <br>
</fieldset>
<br></br>
<fieldset id="audio-type">
<p>Please Choose Type: </p>
<input type="radio" value="C12" name="group2"> Channel 1 & 2 <br>
<input type="radio" value="LR" name="group2"> Left to Right <br>
</fieldset>
<div class="spaceh10"></div>
<input class = "submitButton" type="submit" value="Submit">
<div class="spaceh10"></div>
<div style="width:500px;height:100px;border:1px solid #000;">
<?php
if (isset($_GET['folderPath']) && !empty($_GET['folderPath']) &&
isset($_GET['khz']) && isset($_GET['group2'])) {
$folderPath = $_GET['folderPath'];
$khz = $_GET['khz'];
$group2 = $_GET['group2'];
#$folderPath $khz $group2
$command = './shell.sh';
while (@ ob_end_flush()); // end all output buffers if any
$proc = popen($command, 'r');
echo '<pre>';
while (!feof($proc)){
echo fread($proc, 4096);
@ flush();
}
echo '
'; }?>
и ниже мой сценарий оболочки
while true
do
echo "Hi"
sleep 1
done
Как мне заставить мой код работать в коробке? И убедитесь, что выходы просто остаются в коробке и не переполняются. Почему мой код не показывает результат?
Я отслеживаю адрес сервера, на котором работает мой php файл. И когда я нажимаю «Отправить», он загружается навсегда на белом экране, и, поскольку я знаю, что это не закончится, я останавливаюсь в браузере. и я получаю следующую ошибку.
./shell.sh: line 6: echo: write error: Broken pipe
Как я могу показать вывод моей оболочки в реальном времени в поле? и не выходит за пределы рамки?