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

发布于 2019-05-23 17:59:25
如果您已经将Scout添加到您的项目中,则可以通过以下方式解决此问题:
app\Scout\EngineManager.php<?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')
);
}
}app\Scout\Searchable.php<?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();
}
}app\Providers\ScoutServiceProvider.php<?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中的包发现中排除
"extra": {
"laravel": {
"dont-discover": [
"laravel/scout"
]
}
},在config/app.php.
composer dumpautoload.
Searchable特征添加到模型中,将您自己的特征添加到模型中,而不是
ScoutServiceProvider。如果您希望使超时依赖于环境,可以将其提取到配置设置中。另外请记住,以上是让Searchable特征在较长的超时时间内工作的最低要求,其他类也可能需要被覆盖才能使其他功能工作。
发布于 2019-04-29 16:28:51
Algolia有default timeouts,当请求超过默认值(我相信是2秒)时,会弹出这个错误。您可以使用:time host [ALGOLIA_ID].algolia.net检查请求可能需要多长时间。不幸的是,Laravel Scout没有能力覆盖它,我也没有找到一个好的解决方法。
https://stackoverflow.com/questions/55411303
复制相似问题