我正在寻找一个 php 函数或解决方法,它允许您为执行输出的每一行创建一个回调函数。我能找到的最好的是 proc_open(),但它只允许我在调用 fgets() 时输出每个指定的字节,以获取输出。如果我在 fgets() 中放置的字节太小,它会将一行分成多行;太大会延迟回调。
PHP 中是否有一个函数允许我在每个输出行调用我的回调函数,类似于 proc_open?Exec() 函数是一个很好的例子,因为它可以将每一行放入一个数组中,但它没有选项提供回调,因为它创建了每个索引。
我正在寻找一个 php 函数或解决方法,它允许您为执行输出的每一行创建一个回调函数。我能找到的最好的是 proc_open(),但它只允许我在调用 fgets() 时输出每个指定的字节,以获取输出。如果我在 fgets() 中放置的字节太小,它会将一行分成多行;太大会延迟回调。
PHP 中是否有一个函数允许我在每个输出行调用我的回调函数,类似于 proc_open?Exec() 函数是一个很好的例子,因为它可以将每一行放入一个数组中,但它没有选项提供回调,因为它创建了每个索引。
exec
您可以通过使用回调调用返回的每一行来制作自己的。见下文
function exec_callback($command, $callback){
$array = array();
exec($command, $array, $ret);
if(!empty($array)){
foreach ($array as $line){
call_user_func($callback, $line);
}
}
}
// example to use
function print_lines($line){
echo "> $line\n";
}
exec_callback("ls -l /", 'print_lines');