通过Guzzle服务容器设置CURL选项

时间:2014-06-05 08:46:13

标签: symfony curl guzzle

我需要设置CURLOPT_TCP_NODELAY CURL选项,但问题是我不知道如何使用Sf2的Service Container来做它。

以下是Guzzle现在注入的方式:

services:
    user.user_manager:
        class: Foo\UserBundle\Model\UserManager
        arguments:
            - @guzzle.client

但我也需要添加CURLOPT_TCP_NODELAY

普通的PHP示例:

$guzzle = new \Guzzle\Http\Client(null, array(
    'curl.options' => array(
        'CURLOPT_TCP_NODELAY' => 1
)));

1 个答案:

答案 0 :(得分:5)

您可以创建自定义Guzzle客户端并将其声明为服务:

<?php

namespace You\ProjectBundle\Guzzle;

class MyGuzzleClient extends \Guzzle\Http\Client
{
    public function __construct()
    {
        parent::__construct(null, array(
            'curl.options' => array('CURLOPT_TCP_NODELAY' => 1)
        ));
    }
}

然后将其声明为服务:

services:
    my_guzzle.client:
        class: You\ProjectBundle\Guzzle\MyGuzzleClient

最后,使用如下:

services:
    user.user_manager:
        class: Foo\UserBundle\Model\UserManager
        arguments:
            - @my_guzzle.client