【问题标题】:shell_exec() executing before prior echo statements [duplicate]shell_exec() 在先前的 echo 语句之前执行 [重复]
【发布时间】:2020-02-27 21:32:28
【问题描述】:

我有以下代码

<?php
       if(isset($_POST['cond']){
            echo '<br><p>Script to execute : xxxx.php<p>';
            echo "<p>Executing</p>";
            shell_exec('sleep 5');
            echo "<p>Done</p>";
       }

?>

基本上,用户单击将“条件”发送到同一页面的按钮,然后进入if 块。我想在脚本开始执行时警告用户,然后执行脚本,然后警告用户脚本已经执行; 当前的行为是 shell_exec('sleep 5') 必须在 echo 语句打印到网页之前完全执行。

事实上,如果你把 if 块内的代码放入一个空白页面并尝试加载它,你必须等待 5 秒的睡眠才能加载页面,然后你会看到 echo陈述。我不明白这种行为,PHP不是Javascript,每一行代码都应该按顺序执行吗?

全部在 Debian GNU / Linux 9 远程服务器上执行

提前致谢

【问题讨论】:

  • 是的,效果很好,谢谢。我试图找到一个类似的问题,但看起来我没有想到好的关键字。我投票关闭,因为它是重复的,再次感谢。
  • 听起来不错! .谢谢
  • 麻烦你了,就这样吧:)

标签: php linux shell


【解决方案1】:

试试这个:

if(isset($_POST['cond'])){
    echo '<br><p>Script to execute : xxxx.php<p>';
    echo "<p>Executing</p>";
    if (ob_get_length()) {
        ob_end_flush();
        flush();
    }
    shell_exec('sleep 5');
    echo "<p>Done</p>";
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-18
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多