bat文件的PHP exec()在手动运行时返回0,在通过ajax运行时返回-1

时间:2015-03-31 16:59:44

标签: php ajax batch-file command-line return-value

根据我执行bat文件的方式,我得到不同的$ return值。

当我测试一个脚本时,我使用exec($ command,$ output,$ return)来运行一个bat文件,通过命令行手动运行脚本我得到一个$ for $ return我可以看到一个值$ out按预期结果。当我通过ajax运行相同的脚本时$ return是-1而$ out是一个空白数组。

我找不到负面回报值的大量信息,但我认为说它们是错误是非常安全的 - 尽管我不知道如何从中得到更多信息。

根据我运行bat文件的方式,我得到不同的$ return值的原因是什么?

感谢您的任何建议和帮助。

AJAX代码 - 我正在使用ajaxTime来尝试查看请求的持续时间。它们通常在550-650响应时间内变化:

var ajaxTime = new Date().getTime();
getdSize(f, ajaxTime);

function getSize(f, ajaxTime){
        $.ajax({
            url: "php file handling the ajax request",
            type: "POST",
            data: {
                file : encodeURIComponent(f),
                }
            })
        .done(function(data){
            var totalTime = new Date().getTime()-ajaxTime;
            console.log("Ajax Time: " + totalTime);
            console.log("Data: " + data);
        })
        .fail(function(data){
            if ( data.responseCode ){
              console.log( data.responseCode );
            }
            console.log("Ajax failure");
        });
    }

PHP代码 -

    $file = $_POST['file'];
    echo bat_getSize ($file);
[this calls bat_getSize function]

function bat_getSize($file){
    exec("getSize \"$file\"",$out, $ret);
    return $out[0];
}

哪个叫这个 蝙蝠代码 -

@echo off
echo %~z1

谢谢!

更新 我的理解是正确的,使用.done()回调会阻止我的ajax请求被下一个发送的请求中断吗?或者那可能是失败?

0 个答案:

没有答案