编辑:对于长时间运行的脚本(如守护程序),我建议使用 popen 并将内容从资源中流出。
例子:
<?php
$h = popen('./test.sh', 'r');
while (($read = fread($h, 2096)) ) {
echo $read;
sleep(1);
}
pclose($h);
您应该检查 php.ini 中的“max_execution_time”。如果您在网络服务器上下文中,还要检查那里配置的超时。
编辑结束
你试过执行吗
第二个参数是对一个被脚本输出填充的数组的引用
简而言之:
<?php
$output = array();
exec('/path/to/file/helloworld', $output);
file_put_contents('/path/to/file/output.txt', implode("\n", $output));
例子:
测试.sh:
#!/bin/bash
echo -e "foo\nbar\nbaz";
echo -e "1\n2\n3";
测试.php:
<?php
$output = array();
exec('./test.sh', $output);
var_dump($output);
输出:
php test.php
array(6) {
[0]=>
string(3) "foo"
[1]=>
string(3) "bar"
[2]=>
string(3) "baz"
[3]=>
string(1) "1"
[4]=>
string(1) "2"
[5]=>
string(1) "3"
}
官方 php 文档的引用(链接见上文)
如果存在输出参数,则指定的数组将填充命令的每一行输出。