嗨,我在工匠命令中有以下代码:
exec('rclone copy gdrive: --drive-root-folder-id '.$folderID.' storage/app/tmp/');
//sleep(10);
$platforms=array('Android','iOS','Linux','WindowsStore');
foreach ($platforms as $platform ) {
$existPlatform = Storage::exists('tmp/'.$platform);
if($existPlatform){
$isExists = Storage::exists('tmp/'.$platform.'/'.$uuid.'.zip');
if ($isExists){
$zip_file = 'storage/app/tmp/'.$platform.'/'.$uuid.'.zip';
$zip = new ZipArchive ();
if ($zip->open ($zip_file) === true) {
$zip->extractTo (storage_path ('app/tmp/'.$platform.'/'.$uuid.'/'));
}
$zip->close();
}
$files = File::allFiles('storage/app/tmp/'.$platform.'/'.$uuid.'');
foreach($files as $file){
if($bundleVersion!=1){
Storage::disk('s3-pruebas')->put(''.$platform.'/'.$bundleVersion.'/'.$uuid.'/'.$file->getFilename(), file_get_contents($file));
}else{
Storage::disk('s3-pruebas')->put(''.$platform.'/'.$uuid.'/'.$file->getFilename(), file_get_contents($file));
}
}
}
}
基本上,代码所做的是将本地文件夹与谷歌驱动器上的一个本地文件夹同步。如果我将该代码作为 laravel 命令运行,它会完美运行。等待文件夹同步并继续。另一方面,如果我创建一个 Laravel Livewire 组件,它无法通过复制相同的代码甚至调用 Artisan 函数来执行命令来工作。使用 livewire 它只会为我创建 tmp 文件夹。