Guzzle访问本地网页非常慢

时间:2017-02-05 11:29:16

标签: curl phpunit localhost guzzle guzzlehttp

我刚开始使用Guzzle来验证使用PHPUnit的API进行测试。 API驻留在我的本地计算机上,但Guzzle的响应时间仍然是〜5秒!当我使用浏览器时,它会“立即”加载网站,这让我相信这是GuzzlecURL的问题。

这是我的测试单位:

class MyTest extends \PHPUnit_Framework_TestCase {

    /** @var  GuzzleHttp\Client */
    private $http;

    protected function setUp() {
        $this->http = new GuzzleHttp\Client(['base_uri' => 'http://test-site.local']);
    }

    protected function tearDown() {
        $this->http = null;
    }

    public function testGet() {
        $response = $this->http->request('GET', 'users');

        $this->assertEquals(200, $response->getStatusCode());

        $contentType = $response->getHeaders()["Content-Type"][0];
        $this->assertStringStartsWith("application/json", $contentType);
    }
}

什么可能导致响应时间长?

1 个答案:

答案 0 :(得分:0)

似乎问题与使用.local作为本地测试网址的顶级域名有关。显然,Mac OSx上的Bonjour服务使用.local,以某种方式导致对cURL的干扰(但对于浏览器不够奇怪)。有一个类似的question on the Superuser StackExchange

通过编辑我的hosts文件和虚拟主机配置来解决此问题,以使用.dev代替.local

protected function setUp() {
    $this->http = new GuzzleHttp\Client(['base_uri' => 'http://test-site.dev']);
}