【问题标题】:Continue execution after calling php passthru() function调用php passthru()函数后继续执行
【发布时间】:2012-05-29 11:17:25
【问题描述】:

当使用 php passthru() 函数时,默认是一直停留到外部脚本执行结束。

PHP手册说:::::“如果一个程序用这个函数启动,为了让它在后台继续运行,程序的输出必须重定向到一个文件或另一个输出流。失败这样做会导致 PHP 挂起,直到程序执行结束。” - http://php.net/manual/en/function.passthru.php

我想收集特定时间的外部脚本数据,例如30 秒,然后继续执行 php 脚本。任何想法如何做到这一点?

我当前的代码是:

    ob_start();
    passthru("/home/somefolder/somefolder2/program $pic1 $pic2");
    $details = ob_get_contents();
    ob_end_clean();

上面代码的问题是 - 有时“程序”脚本会持续执行一段时间,但我不想让用户在这个过程中停留超过 30 秒。

我考虑过将输出重定向到一个文件并在 30 秒后读取它(根据手册)。但我不知道如何将输出重定向到文件。

【问题讨论】:

    标签: php passthru external-script


    【解决方案1】:
    "/home/somefolder/somefolder2/program $pic1 $pic2 > /path/to/your/file 2>&1"
    

    如果您希望它在后台运行,请在末尾添加&

    "/home/somefolder/somefolder2/program $pic1 $pic2 > /path/to/your/file 2>&1 &"
    

    【讨论】:

    • 这是否会继续执行php脚本,直到程序执行结束才挂起?
    • 如果让它在后台运行,那么php脚本的执行就不会挂起。
    • 您能解释一下“2>&1”部分的用途吗?
    猜你喜欢
    • 1970-01-01
    • 2015-10-22
    • 2020-10-06
    • 1970-01-01
    • 1970-01-01
    • 2021-09-09
    • 1970-01-01
    • 1970-01-01
    • 2020-04-14
    相关资源
    最近更新 更多