在php中执行shell,但在生成输出时更新页面

时间:2014-03-27 23:51:31

标签: javascript php jquery ajax shell

这是一个使用jquery / ajax来调用php的html页面,它调用c程序来更新页面而无需刷新。

我有一个来自用户输入名为 input_form 的数据:

<form id="input_form" name="input_form">
... code ...
</form>

接下来,我有一个Jquery函数,在单击表单按钮时将数据输出到文本框:

//send all of the form data to php and print php's response
$(document).ready(function(){

    //the current request
    var request;

    //what happens the form submit button is clicked
    $("#input_form").submit(function(event){

        //if a request is currently going on, abort this new request
        if (request) {request.abort();}

        var serializedData = $(this).serialize();

        //disable inputs while the request is going on
        var $inputs = $(this).find("input, select, button, textarea");
        $inputs.prop("disabled", true);

        //perform the request and send the output to a div
        request = $.ajax({
            type: "get",
            url: "ajax.php",
            data: serializedData,
            success: function(result){
                $('#answer').val(result);
            }
        });

        //re-enable all of the inputs now that the request is over
        request.always(function () {$inputs.prop("disabled", false);});

        //prevent default posting on the form
        return event.preventDefault();
    });

});

在php端,我接收所有表单数据,并将它们传递给c程序,等待输出,然后回显它:

<?php
$program_statement = './main';
$program_statement .= ' --amount=' . escapeshellarg($_GET['amount']);
$program_statement .= ' --max=' . escapeshellarg($_GET['max']);
$program_statement .= ' --min=' . escapeshellarg($_GET['min']);

$output=shell_exec($program_statement);
echo $output;
?>

问题: 该程序可能需要很长时间才能运行。有没有办法让输出显示在页面上,因为它被输出到shell?函数shell_exec别无选择,只能等待。如何通常完成我想要的同步更新?我做过你认为只是错误做法的事情,还是反对最佳做法?

这是link to the project 这是目前正在运行的link to the server

0 个答案:

没有答案