【问题标题】:PHP blocking request to remote webservices with guzzlePHP 用 guzzle 阻止对远程 Web 服务的请求
【发布时间】:2014-10-29 00:21:42
【问题描述】:

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

任何帮助将不胜感激,

谢谢

【问题讨论】:

    标签: php curl laravel-4 nonblocking guzzle


    【解决方案1】:

    您可以使用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 等其他文章。

    【讨论】:

    • 谢谢,我会调查的。
    猜你喜欢
    • 2019-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    • 2018-06-28
    • 2016-09-08
    相关资源
    最近更新 更多