问题描述
在laravel应用程序中,当前有一个用户登录。我通过auth脚手架创建了登录名。他可以按下一个按钮,然后通过我的JavaScript代码在新标签页中执行获取请求。 get请求正在创建一个很大的pdf文件,需要花费一些时间来加载。如果用户不耐烦,即使第一个获取请求仍在运行,他也可以单击旧选项卡,然后再次按按钮。
现在会发生什么? 有两种选择:
我做了很多实验,经历了两种情况。如何运作?
编辑:这是我的代码:
public function tmsheetsPanelPrintAll (Request $request)
{
ControllerFunctions::validate($request);
//path vars
$local_link_full = Storage::disk('local')->getDriver()->getAdapter()->getPathPrefix() . 'tmsheets\\tmpprint\\';
$local_link_short = 'tmsheets\\tmpprint\\';
$personalFolderName = FileHelper::emailToFilename(auth()->user()->email);
//make directory
Storage::disk('local')->makeDirectory($local_link_short . $personalFolderName);
//helper
$pdfhelper = new Pdfhelper();
$pdfMerger = PDFMerger::init();
$filteredTmsheetIds = $request->session()->get('filteredTmsheetIds');
//generate a new pdf in the corresponding folder foreach timesheet in session
foreach ($filteredTmsheetIds as $index) {
//generate PDF
$pdf = $pdfhelper->generateTMsheetPDF($index);
$filename = $pdfhelper->getTMsheetsFilename();
Storage::disk('local')->put($local_link_short . $personalFolderName . '\\' . $filename,$pdf->output());
$pdfMerger->addPDF($local_link_full . $personalFolderName . '\\' . $filename,'all');
}
$pdfMerger->merge();
Storage::disk('local')->deleteDirectory($local_link_short . $personalFolderName);
$pdfMerger->save("file_name.pdf","browser");
}
我正在使用domPdf和pdfMerger。除了在很长的计算时间内单击两次外,它都可以正常工作。注意:会话中有几个索引。如果我仅使用7个PDF索引来运行代码,那么即使单击两次也可以正常工作。然后,第一个请求似乎已完成,一切正常(请参见上面的情况1)。如果会话中有122个索引,则情况2发生。代码重叠,第一个请求完成,但是第二个请求返回错误:“ file_get_contents->打开流失败:没有这样的文件或目录”。 lara-pdf-merger \ src \ LynX39 \ LaraPdfMerger \ tcpdf \ tcpdi.PHP:121引发此错误。我认为是因为第一个请求在代码末尾删除了文件,而第二个请求仍然尝试访问它。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)