Return 正确的闭包数组
Return correct array from closure
我在我的代码中使用 Laravel 5.3
上的 LaravelCollective SSH 闭包
但令我惊讶的是,当尝试 return 退出任何命令时,得到一个 t运行cate 结果。
$exit = array();
SSH::run($cmd, function ($line) use (&$exit) {
echo $line.PHP_EOL;
$exit[] = $line;
});
dd($exit) // dd it's a var_dump + exit helper on Laravel
好吧,这段代码 return 第一部分 (echo $line.PHP_EOL) 更正下面的内容
/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home
/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home/daily.0
/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home/daily.0/.appdata
/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home/daily.0/.autorespond
/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home/daily.0/.cpanel
/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home/daily.0/.cphorde
/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home/daily.0/.cpremote
/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home/daily.0/.elinks
...
数组上的结果错误。 4
array:5 [
0 => """
/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home\n
/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home/daily.0\n
/Volumes/MACBAC
...
"""
4 => """
UP/cprsync_remote/hq/daily/users/tamainut/home/daily.8/tmp\n
/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home/daily.8/updates\n
/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home/daily.9\n
/Volumes/MACBACKUP/cprsync_r
我尝试了几个选项,但都没有问题。
我不明白为什么我看到完美的回声线,但不能插入数组以供稍后工作。
一些评论后编辑。
我看到这个问题是关闭的,得到一个 line
of SSH 命令如何用“\n”字符串。在获得字符串 t运行cate 的最大大小和 运行 闭包的新迭代之后。那就是问题了。
经过一些测试,我找到了一个解决方案,虽然它看起来不太合适。
问题是 SSH 运行 方法,returns 需要多少字符串,有字节限制,我不知道。
我们不能使用数组,因为数组会包含 t运行 个元素,所以我认为最好的办法是将行提取为字符串,稍后再处理。
如果有人能回复,非常感谢,
$exit = '';
SSH::run($cmd, function ($line) use (&$exit) {
$exit = $exit.$line;
});
$arr = explode("\n",$exit);
dd($arr);
显示正确结果
array:863 [
0 => "/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home"
1 => "/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home/daily.0"
2 => "/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home/daily.0/.appdata"
...
861 => "/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home/daily.9/updates"
862 => ""
]
注意字符串的限制(2GB 但 memory_limit
强加的其他限制)
我在我的代码中使用 Laravel 5.3
上的 LaravelCollective SSH 闭包但令我惊讶的是,当尝试 return 退出任何命令时,得到一个 t运行cate 结果。
$exit = array();
SSH::run($cmd, function ($line) use (&$exit) {
echo $line.PHP_EOL;
$exit[] = $line;
});
dd($exit) // dd it's a var_dump + exit helper on Laravel
好吧,这段代码 return 第一部分 (echo $line.PHP_EOL) 更正下面的内容
/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home
/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home/daily.0
/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home/daily.0/.appdata
/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home/daily.0/.autorespond
/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home/daily.0/.cpanel
/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home/daily.0/.cphorde
/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home/daily.0/.cpremote
/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home/daily.0/.elinks
...
数组上的结果错误。 4
array:5 [
0 => """
/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home\n
/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home/daily.0\n
/Volumes/MACBAC
...
"""
4 => """
UP/cprsync_remote/hq/daily/users/tamainut/home/daily.8/tmp\n
/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home/daily.8/updates\n
/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home/daily.9\n
/Volumes/MACBACKUP/cprsync_r
我尝试了几个选项,但都没有问题。
我不明白为什么我看到完美的回声线,但不能插入数组以供稍后工作。
一些评论后编辑。
我看到这个问题是关闭的,得到一个 line
of SSH 命令如何用“\n”字符串。在获得字符串 t运行cate 的最大大小和 运行 闭包的新迭代之后。那就是问题了。
经过一些测试,我找到了一个解决方案,虽然它看起来不太合适。
问题是 SSH 运行 方法,returns 需要多少字符串,有字节限制,我不知道。
我们不能使用数组,因为数组会包含 t运行 个元素,所以我认为最好的办法是将行提取为字符串,稍后再处理。
如果有人能回复,非常感谢,
$exit = '';
SSH::run($cmd, function ($line) use (&$exit) {
$exit = $exit.$line;
});
$arr = explode("\n",$exit);
dd($arr);
显示正确结果
array:863 [
0 => "/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home"
1 => "/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home/daily.0"
2 => "/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home/daily.0/.appdata"
...
861 => "/Volumes/MACBACKUP/cprsync_remote/hq/daily/users/tamainut/home/daily.9/updates"
862 => ""
]
注意字符串的限制(2GB 但 memory_limit
强加的其他限制)