PHP用guzzle阻止对远程Web服务的请求

时间:2014-10-29 00:21:43

标签: php curl laravel-4 nonblocking guzzle

我正在尝试向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脚本将文件下载到服务器。但我希望能够更好地控制请求和响应。

任何帮助将不胜感激,

由于

1 个答案:

答案 0 :(得分:0)

您可以使用work queues在后台运行下载:

Queue::push(function($job)
{
    $request = $httpClient->get($downloadFileUrl, array(
        'future' => true, 
        'cookies' => true, 
        'save_to' => $filename
    ));

    $job->delete();
});

这是一篇关于如何Setup Laravel with Beanstalkd的好文章,但您也可以使用IronMQ,Amazon SQS,Redis等其他文章。