首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Guzzlehttp\Exception\ConnectionException:在2851毫秒后解析超时时出现cURL错误28

Guzzlehttp\Exception\ConnectionException:在2851毫秒后解析超时时出现cURL错误28
EN

Stack Overflow用户
提问于 2019-03-29 13:58:27
回答 2查看 1.9K关注 0票数 1

我最近使用Laravel-Scout库将Algolia与我的laravel应用程序集成在一起。每当我尝试使用algolia搜索任何产品时,都会得到GuzzelHttp\Exception\Connection\Exception。以下是响应的屏幕输出。当我将我的数据库与Algolia的服务器同步时,同样的问题也会出现。我已经在我的项目中再次检查了我的Algolia凭证,它们是正确匹配的。我在linux mint-18.04LTS中运行这个项目,使用默认的laravel服务器(既不是Apache也不是Nginx)和MySQL服务器。

EN

回答 2

Stack Overflow用户

发布于 2019-05-23 17:59:25

如果您已经将Scout添加到您的项目中,则可以通过以下方式解决此问题:

  1. 创建自己的app\Scout\EngineManager.php

代码语言:javascript
复制
<?php declare(strict_types = 1);

namespace App\Scout;

use Algolia\AlgoliaSearch\Config\SearchConfig;
use Algolia\AlgoliaSearch\SearchClient as Algolia;
use Algolia\AlgoliaSearch\Support\UserAgent;
use Laravel\Scout\EngineManager as BaseEngineManager;
use Laravel\Scout\Engines\AlgoliaEngine;

class EngineManager extends BaseEngineManager
{
    /**
     * Create an Algolia engine instance.
     *
     * @return \Laravel\Scout\Engines\AlgoliaEngine
     */
    public function createAlgoliaDriver()
    {
        $this->ensureAlgoliaClientIsInstalled();

        UserAgent::addCustomUserAgent('Laravel Scout', '7.0.0');

        $config = SearchConfig::create(config('scout.algolia.id'), config('scout.algolia.secret'));
        $config->setConnectTimeout(10);

        $algolia = Algolia::createWithConfig($config);

        return new AlgoliaEngine(
            $algolia,
            config('scout.soft_delete')
        );
    }
}

  1. 创建自己的app\Scout\Searchable.php

代码语言:javascript
复制
<?php declare(strict_types = 1);

namespace App\Scout;

use Laravel\Scout\Searchable as BaseSearchable;

trait Searchable
{
    use BaseSearchable;

    /**
     * Get the Scout engine for the model.
     *
     * @return mixed
     */
    public function searchableUsing()
    {
        return app(EngineManager::class)->engine();
    }
}

  1. 创建自己的app\Providers\ScoutServiceProvider.php

代码语言:javascript
复制
<?php declare(strict_types = 1);

namespace App\Providers;

use App\Scout\EngineManager;
use Laravel\Scout\ScoutServiceProvider as BaseScoutServiceProvider;

class ScoutServiceProvider extends BaseScoutServiceProvider
{
    /**
     * Register the service provider.
     *
     * @return void
     */
    public function register()
    {
        $this->app->singleton(EngineManager::class, function ($app) {
            return new EngineManager($app);
        });

        parent::register();
    }
}

composer.json中的包发现中排除

  1. 默认的scout包

代码语言:javascript
复制
"extra": {
    "laravel": {
        "dont-discover": [
            "laravel/scout"
        ]
    }
},

config/app.php.

  • Run composer dumpautoload.

  • Whenever中将您的特征添加到提供者列表中将Searchable特征添加到模型中,将您自己的特征添加到模型中,而不是

  • ScoutServiceProvider

如果您希望使超时依赖于环境,可以将其提取到配置设置中。另外请记住,以上是让Searchable特征在较长的超时时间内工作的最低要求,其他类也可能需要被覆盖才能使其他功能工作。

票数 1
EN

Stack Overflow用户

发布于 2019-04-29 16:28:51

Algolia有default timeouts,当请求超过默认值(我相信是2秒)时,会弹出这个错误。您可以使用:time host [ALGOLIA_ID].algolia.net检查请求可能需要多长时间。不幸的是,Laravel Scout没有能力覆盖它,我也没有找到一个好的解决方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55411303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档