私のコードでは、Laravel 5.3でLaravelCollectiveの SSH を使用したクロージャーを使用しています。
しかし、私の驚きは、コマンドの return 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"で文字列を取得します. 文字列の切り捨ての最大サイズを取得した後、クロージャーの新しい反復を実行します。問題だと。