使用 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 秒后读取它(根据手册)。但我不知道如何将输出重定向到文件。
"/home/somefolder/somefolder2/program $pic1 $pic2 > /path/to/your/file 2>&1"
如果您希望它在后台运行,请在末尾添加&
。
"/home/somefolder/somefolder2/program $pic1 $pic2 > /path/to/your/file 2>&1 &"