我正在尝试执行对web服务的请求,以便将大型文件下载到我的服务器。我的网络应用程序在laravel 4中,我正在使用guzzle进行请求。
问题是,从远程服务启动文件下载后,在下载响应完成之前,我无法执行对应用程序的任何请求。
下面是我的代码示例:
public function download($id, $url, $filename)
{
// some data for request
$request = $httpClient->get($downloadFileUrl, array(
'future' => true,
'cookies' => true,
'save_to' => $filename
)
);
return $cookieRequest;
}
在过去,我使用exec启动curl或wget脚本将文件下载到服务器。但我希望对请求和响应有更多的控制权。
任何帮助都将不胜感激,
感谢
您可以使用工作队列在后台运行下载:
Queue::push(function($job)
{
$request = $httpClient->get($downloadFileUrl, array(
'future' => true,
'cookies' => true,
'save_to' => $filename
));
$job->delete();
});
这里有一篇关于如何使用Beanstalkd设置Laravel的好文章,但您也可以使用IronMQ、Amazon SQS、Redis等其他工具。