2

这是代码:

$this->baseUrl = "https://sfbay.craigslist.org/sfc/apa/";
$this->client = new Goutte\Client();
$curlOptions = array(
    CURLOPT_CONNECTTIMEOUT => 600,
    CURLOPT_TIMEOUT => 600
);
$this->client->getClient()->setDefaultOption('config', ['curl' => $curlOptions]);
$crawler = $this->client->request("GET", $this->baseUrl);

错误(重复两次): PHP Fatal error: Uncaught exception 'GuzzleHttp\Exception\RequestException' with message '[curl] (#28) See http://curl.haxx.se/libcurl/c/libcurl-errors.html for an explanation of cURL errors [url] https://sfbay.craigslist.org/sfc/apa/' in /Users/...../vendor/guzzlehttp/guzzle/src/Adapter/Curl/MultiAdapter.php:216

问题是:代码在一小时前工作,没问题!在发现错误 #28 超时后,我添加了 cURL 选项。

我错过了 cURL 选项吗?或者也许我设置的值错误?为什么要改变?我不在一个明显较慢的网络(AFAIK)上。

4

3 回答 3

2

“GuzzleHttp”代码已更新。因此,您需要按如下方式设置卷曲

$client = new \Goutte\Client();

$guzzleClient = new \GuzzleHttp\Client(array(
    'curl' => array(
        CURLOPT_TIMEOUT => 60,
    ),
));
$client->setClient($guzzleClient);
$crawler = $client->request('GET', $my_url); 
于 2016-07-27T08:41:02.273 回答
1

好的,我发现了我的代码的问题。

这是优先级。我放了这个:

$client->getClient()->setDefaultOption('config/curl/'.CURLOPT_TIMEOUT, 0);
$client->getClient()->setDefaultOption('config/curl/'.CURLOPT_TIMEOUT_MS, 0);
$client->getClient()->setDefaultOption('config/curl/'.CURLOPT_CONNECTTIMEOUT, 0);
$client->getClient()->setDefaultOption('config/curl/'.CURLOPT_RETURNTRANSFER, true);

前:

$crawler = $client->request('GET', $my_url);

它奏效了!

于 2015-03-30T10:51:23.937 回答
0

我遇到了同样的问题。你在使用从 git 下载的 gotte.phar 吗?

如果是这样,那就是问题所在。

通过自动加载作曲家使用实际的源文件,它应该可以工作。

于 2014-08-22T15:04:49.120 回答