【发布时间】:2020-10-24 16:10:28
【问题描述】:
我正在处理的 Laravel Zero 项目中遇到问题。我正在处理一个命令来处理 2 个磁盘之间的直接文件传输——1 个 SFTP 和另一个本地。
我已经正确配置并测试了我能够使用下面的Storage 代码在它们之间传输文件。当我尝试使用 spatie/async 包创建并发传输池(或者可能只是我尝试这样做的方式)时,我的问题会弹出。
$pool = Pool::create()
->concurrency($limit);
$progress = $this->output->createProgressBar($file_list);
if(!Storage::disk('local')->exists($local_folder_path)) {
Storage::disk('local')->makeDirectory($local_folder_path);
}
foreach($file_list as $filename => $remote_path) {
$pool->add(function() use ($remote_path, $filename, $local_folder_path) {
Storage::disk('local')
->writeStream(
"{$local_folder_path}/{$filename}",
Storage::disk('remote')->readStream($remote_path)
);
return $filename;
})->then(function($filename) use (&$progress) {
$this->info("{$filename} downloaded");
$progress->advance();
})->catch(function($exception) {
$this->error($exception);
});
}
$pool->wait();
$progress->finish();
顺便说一句,错误RuntimeException: a facade root has not been set 正在通过池中第一项的catch() 处理程序打印到我的控制台。我确实发现了这么多。
我已经搜索过这个问题的答案,但我遇到的所有文章和其他 SO/Stack Exchange 帖子似乎都与导致我的问题的原因不相似。
提前感谢您的帮助。
【问题讨论】: