Laravel文件对象生存期


Laravel file object lifetime

我正试图从包含4000条记录的数据库中创建备份文件(实际上备份将远远超过20000条记录),为此,我打开文件对象,然后填充文件头,然后尝试以adif格式逐行追加记录。在不创建文件的情况下进行测试时,它会返回格式化的文本,但如果我将fwrite添加到循环中,它会抛出错误
"undefined variable $file."
以下是整个函数

 public function processBackup() {
        set_time_limit(300);
        DB::disableQueryLog();    
        $fileName = 'backup'.date('YmdHis').'.adi';
        $destinationPath = public_path().'/uploads/backups/'.Sentry::getUser()->username.'/';
        $file = fopen($destinationPath.$fileName, 'w');
        fwrite($file, "ADIF 2 Export from SWARLOG'n");
        fwrite($file, "Generated on ".date('Y-m-d')."'n");
        fwrite($file, "<PROGRAMID:7>SWARLOG'n");
        fwrite($file, "<ADIF_Ver:1>2'n");
        fwrite($file, "<EOH>'n");
        Qso::withUser(Sentry::getUser()->id)->chunk(50,function($qsos){
            foreach ($qsos as $qso) {
                $row = AdifHelper::getAdif($qso);
                fwrite($file, $row);
            }
        });    
        fclose($file);
    }

怎么了?

您应该将use添加到您的函数中。

更改:

function($qsos)

进入:

function($qsos) use ($file)