【问题标题】:shell_exec does not run in the background, any other solution?shell_exec 不在后台运行,还有其他解决方案吗?
【发布时间】:2012-09-07 16:35:17
【问题描述】:

我在 CentOS 上的 apache 中使用 php。 我需要为用户服务,他们可以通过点击删除大文件。 试图使用 shell_exec。 但它不在后台运行。 它运行并让用户等待。

我的命令:

$D_command="rm -rf 视频/'$Mdelete'";

shell_exec($D_command);

谢谢!

【问题讨论】:

    标签: php centos shellexecute


    【解决方案1】:

    ass & 在命令的末尾。

    $D_command="nohup rm -rf videos/'$Mdelete' > /log/deletedfile.log 2>&1 &";
    

    【讨论】:

    • 你可以在开头添加nohup。 "nohup rm -rf 视频/'$Mdelete' &"
    • 你必须添加nohup,否则进程生成为apache并且没有线程。
    【解决方案2】:
    $PID = shell_exec("nohup $Command 2> /dev/null & echo $!");
    

    http://php.net/manual/en/function.shell-exec.php

    【讨论】:

      【解决方案3】:

      尝试运行

      rm -rf videos/'$Mdelete' &
      

      使用exec。和号表示运行到后台

      【讨论】:

      • nohup 必须添加在命令的开头。这告诉 php 解释器在后台运行该进程。它不是返回命令的输出,而是返回进程 id
      • @user692601 您是否尝试过使用execshell_exec
      【解决方案4】:

      试试这个:

      popen($D_command, 'r')
      

      【讨论】:

        【解决方案5】:

        我知道这是一个很老的问题,但我遇到了同样的问题,这是在尝试使用 exec,shell_exec,process_open 失败后唯一可行的解​​决方案:

        $process = popen("nohup $D_command > /dev/null 2> /dev/null & echo $!", 'r');
        $pid = fread($process, 32);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-05-15
          • 2015-12-16
          • 2012-04-28
          • 1970-01-01
          相关资源
          最近更新 更多