繁体   English   中英

使用php清除CMD-shell

[英]Clear CMD-shell with php

我有这个简单的PHP脚本,每秒输出一个字符串。

<?php
$i = 1;

while(1)
{
    exec("cls");    //<- Does not work
    echo "test_".$i."\n";

    sleep(1);
    $i++;
}

我在windows( php myscript.php )上的命令shell中执行脚本,并尝试在每个循环之前清除命令shell。 但是我没有让它发挥作用。 有任何想法吗?

这个怎么样?

<?php
$i = 1;
echo str_repeat("\n", 300); // Clears buffer history, only executes once
while(1)
{
    echo "test_".$i."\r"; // Now uses carriage return instead of new line

    sleep(1);
    $i++;
}

str_repeat()函数在while循环之外执行,而不是用新行结束每个echo,它将指针移回现有行,并在其顶部写入。

你能检查这个解决方案吗?

$i = 1;
echo PHP_OS;

while(1)
{
    if(PHP_OS=="Linux")
    {
        system('clear');
    }
    else
        system('cls');
    echo "test_".$i."\n";

    sleep(1);
    $i++;
}

显然,您必须存储变量的输出,然后将其print以使其成功清除屏幕:

$clear = exec("cls");
print($clear);

全部一起:

<?php
$i = 1;

while(1)
{
    $clear = exec("cls");
    print($clear);
    echo "test_".$i."\n";

    sleep(1);
    $i++;
}

我在Linux上使用clear而不是cls (等效命令)测试它并且它工作正常。

重复➝ 这个问题

在Windows下,没有这样的东西

@exec('cls');

抱歉! 所有你可能做的就是寻找一个可执行文件(不是cmd内置命令), 就像这里 ...

您必须将输出打印到终端:

<?php
$i = 1;

while(1)
{
    exec("cls", $clearOutput);
    foreach($clearOutput as $cleanLine)
    {
         echo $cleanLine;
    }
    echo "test_".$i."\n";

    sleep(1);
    $i++;
}

如果是linux服务器使用以下命令( clear )如果它是窗口服务器使用cls我希望它会工作

$i = 1;

while(1)
{
    exec("clear");    //<- This will work
    echo "test_".$i."\n";

    sleep(1);
    $i++;
}

第二解决方案

<?php
$i = 1;
echo PHP_OS;

while(1)
{
    if(PHP_OS=="Linux")
     {
        $clear = exec("clear");
        print($clear);
      }
    else
    exec("cls");
    echo "test_".$i."\n";

    sleep(1);
    $i++;
}

这个对我有用,也经过测试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM