PHP Shell_exe c Живой вывод в коробке - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь запустить shell.sh $folderPath $khz $group2 и отобразить вывод в реальном времени в поле на странице.

Однако, когда я нажимаю «Отправить», я не получаю вывода.

Как мне получить вывод в реальном времени из моего php скрипта?

<code><!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>AppTek</title>
    <link rel="stylesheet" href="./css/style.css">
    <link rel="stylesheet" href="./css/splitter.css">
</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']) && is_dir($_GET['folderPath']) && 
        isset($_GET['khz']) && isset($_GET['group2'])) {

        $folderPath = $_GET['folderPath'];
        $khz = $_GET['khz'];
        $group2 = $_GET['group2'];

        $run = shell_exec("shell.sh $folderPath $khz $group2");
        while (@ ob_end_flush()); 

        $proc = popen($run, 'r');
        echo '<pre>';
        while (!feof($proc))
        {
            echo fread($proc, 4096);
            @ flush();
        }
        echo '
'; }?>

и оболочка. sh будет что-то вроде

#!/bin/bash
echo "path: $1 arg1: $2 arg2: $3"

1 Ответ

0 голосов
/ 07 мая 2020

возможно это?

    $run = shell_exec("shell.sh {$folderPath} {$khz} {$group2}");

Не похоже, что вы правильно передаете эту переменную. Если это не сработает, возможно, сделайте строку отдельно.

    $command = 'shell.sh {$folderPath} {$khz} {$group2}';
    $run = shell_exec($command);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...