首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用php将命令行执行显示为弹出窗口或窗口

使用php将命令行执行显示为弹出窗口或窗口
EN

Stack Overflow用户
提问于 2017-01-11 18:22:14
回答 3查看 714关注 0票数 0

当执行来自php的终端命令时,需要将终端执行显示为弹出窗口或类似流的视频。要将输出显示到浏览器中,就像this.But一样,还必须像在控制台中一样显示输出。

代码语言:javascript
复制
$script= 'cd /var/www/html/project_direcoty;java -cp <script>;
while(@ob_end_flush());
    ini_set('implicit_flush', true);
    ob_implicit_flush(true);

    $proc = popen($script,'r');
echo '<pre>';
    while(!feof($proc)){
        echo fread($proc, 4096);

        @ flush;
    }
    ob_flush();
    $_SESSION['case_id']= '';

echo '</pre>';

但需要像弹出窗口一样显示执行过程。有可能吗?

使用MTS修改了代码

代码语言:javascript
复制
$shell    = \MTS\Factories::getDevices()->getLocalHost()->getShell('bash', false);
$shell->exeCmd('cd /var/www/html/folderpath');
$cmd = 'java -cp "libs/*:bin" org.testng.TestNG '.$cases['case_id'].' 2>&1';
$return1 = $shell->exeCmd($cmd);
$windowObj      = \MTS\Factories::getDevices()->getLocalHost()->getBrowser('phantomjs')->getNewWindow($return1);
$width  = 640;
$height = 480;
$windowObj->setSize($width, $height);
$windowObj->close();
$shell->terminate();
echo $return1;

得到这样的输出。

代码语言:javascript
复制
Fatal error: Uncaught Exception: MTS\Common\Devices\Shells\Bash::shellStrExecute>> Read data timeout in /var/www/html/MTS/MTS/Common/Devices/Shells/Bash.php:81 Stack trace: #0 /var/www/html/MTS/MTS/Common/Devices/Shells/Base.php(89): MTS\Common\Devices\Shells\Bash->shellStrExecute('java -cp "libs/...', '\\[bash\\.58787dd...', 10000) #1 /var/www/html/Sandbox_oway/admin/run-test-cases.php(84): MTS\Common\Devices\Shells\Base->exeCmd('java -cp "libs/...') #2 {main} thrown in /var/www/html/MTS/MTS/Common/Devices/Shells/Bash.php on line 81
EN

回答 3

Stack Overflow用户

发布于 2017-01-11 19:48:24

您可以使用MTS

这是一个

的工具集。目前由两个核心组件组成的shell和browser.This项目致力于为开发人员提供工具,使他们能够自动化为人设计的流程。

请阅读GitHub wiki中的要求和安装。

在您的情况下,您需要在新窗口中显示。是的,你可以展示。

在这里,它使用PhantomJS.You可以打开一个网站,并使用PHP对其执行标准函数。

代码语言:javascript
复制
//Some websites are either far away or just slow, so it is a good idea to up the allowed execution time.
ini_set('max_execution_time', 120);

//Get a new browser window:
$myUrl          = "https://www.yourwebsite.com/";
$windowObj      = \MTS\Factories::getDevices()->getLocalHost()->getBrowser('phantomjs')->getNewWindow($myUrl);

$windowObj现在包含一个浏览器窗口,其中加载了您的网站。

你可以从这个page中阅读更多。

票数 1
EN

Stack Overflow用户

发布于 2017-01-23 20:59:33

通过另一种方式将popen输出保存到文本文件,然后进行ajax调用,将文件输出显示到html。

票数 0
EN

Stack Overflow用户

发布于 2017-02-28 02:52:44

MTS可以让你返回一个命令。然而,在您的示例中,您将(empty)返回传递给PhantomJS headless浏览器,而不是传递给发出请求的客户机。

以下是更正后的示例:

代码语言:javascript
复制
//you will get the "Read data timeout" exception if your command takes longer than the default timeout in milisecs. make sure the value is high enough.
$timeOut  = 100000;

$shell    = \MTS\Factories::getDevices()->getLocalHost()->getShell('bash', false);
$shell->exeCmd('cd /var/www/html/folderpath');
$cmd = 'java -cp "libs/*:bin" org.testng.TestNG '.$cases['case_id'].' 2>&1';
$return1 = $shell->exeCmd($cmd, null, $timeOut);
$shell->terminate();

//the return from your command, however since you are redirecting the output/error pipes (2>&1) this variable will be empty. If your command displays data, remove the redirect to get data.
echo $return1;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41588211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档