我在我的代码上使用了Laravel 5.3上的LaravelCollective的SSH闭包
但是当我尝试为任何命令返回exit时,我感到很鄙视,得到截断结果。
$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
这段代码返回第一部分(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
的SSH命令如何用" \ n"字符串。获得字符串截断的最大大小后,运行一个新的闭包迭代。这是它的问题。
答案 0 :(得分:0)
经过一些测试后,我找到了一个解决方案,尽管看起来不太合适。
问题是SSH run方法,根据需要返回尽可能多的字符串,用于字节限制,我不知道。
我们不能使用数组,因为数组会包含截断的元素,所以我认为最好的方法是将该行提取为字符串并稍后处理。
如果有人能够以最感激的回复回复,
$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
强加的其他限制)