给定的方案是: 我有一个名为“缓存”的服务,目的是缓存来自各种系统的文件资源。这样,直接的应用程序联系就独立于外部服务的稳定性。
不利的一面是,用户必须等待更长的时间才能获取文件,因为首先服务器必须完成缓存。只有在交付文件之后。
是否有可能允许用户通过指向不断增长的文件来开始下载尚未完成的文件,而另一个进程则负责处理外部文件的下载。
此刻,通过使用laravels下载响应来传递文件:
$file_path = storage_path("app/download_cache/" . $this->id . ".zip");
return response()->download($file_path, $custom_file_name);
缓存使用带有'sink'方法的GuzzleHttp-Client来防止大文件(一些GB)上的内存溢出:
$client->request("GET", $downloadResource->resource_url,
[
'headers' => $headers,
'sink' => storage_path("app/download_cache/.tmp/" . $this->id . '/' . $downloadResource->id),
]);
(在某些进程处理文件的过程中,路径不匹配。)
首先,我只想问一个人是否有类似的问题,也许是一个答案/了解该问题是否可能的知识。