我按照您的精彩教程创建了一个 DigitalOcean 液滴,并且我在 Laravel 中成功使用了它👌
我遇到的唯一问题是服务器关闭时(手动停止或 CPU 超过 100%)。
我找不到可以设置短超时的位置以便显示错误?
现在它正在无限期地加载等待来自死服务器的响应。
你好@desaintflorent ,如果我没记错的话,这个包不提供设置超时的选项。 我不是 laravel 用户,所以我无法为 laravel 提供任何解决方法。
如果有人知道解决方法,请随时在此问题上分享🙂
很高兴看到您喜欢我们文档中的 DO 教程,我们尽最大努力提供带有精美文档的集成!
我相信这必须在 Meilisearch PHP 客户端级别通过将自定义 GuzzleHTTP 实例传递给客户端来完成: https ://github.com/meilisearch/meilisearch-php#customize -your-http-client
目前没有办法做到这一点。 也许我们可以允许用户在配置中传递一个自定义的 Meilisearch PHP 客户端
这将是一个很好的补充。 但是,根据我解释上下文的这个问题,这个 repo 不会有任何与 larvel/scout 不一致的新添加
我们可能会创建一个新的 repo,它更像是一个 meilisearch-laravel-scout-extended 插件,我们会将这种可能性集成到其中。 我让这个问题打开,因为它是改进下一个 repo(或这个 repo 的下一个版本)的好主意。
你好@desaintflorent ,
我不确定这是您要求的,但根据@hi019所说,您可以覆盖 MeilisearchServiceProvider 以使用自定义 http 客户端。
例子:
php artisan make:provider MeilisearchServiceProvider
<?php
namespace App\Providers;
use MeiliSearch\Client;
class MeilisearchServiceProvider extends \Meilisearch\Scout\MeilisearchServiceProvider
{
public function register()
{
parent::register();
$this->app->singleton(Client::class, function () {
return new Client(config('meilisearch.host'), config('meilisearch.key'), new \GuzzleHttp\Client(['timeout' => 0.01]));
});
}
}
在你config/app.php
'providers' => [
// Other Service Providers
App\Providers\MeilisearchServiceProvider::class,
],
然后,您应该通过将以下内容添加到您的 composer.json 来禁用 Meilisearch 被自动发现
...
"extra": {
"laravel": {
"dont-discover": [
"meilisearch/meilisearch-laravel-scout"
]
}
},
...
如果我没有错过你应该做得好的东西,超时将抛出MeiliSearch\Exceptions\CommunicationException
try {
$movies = Movie::search('b')->get();
} catch (\MeiliSearch\Exceptions\CommunicationException $e) {
// do something
}
如果有人有更好的选择,我会很高兴阅读它:微笑:
@shokme您可能应该在 app.php 中注册提供程序: https ://laravel.com/docs/8.x/providers#registering -providers
@shokme您可能应该在 app.php 中注册提供程序: https ://laravel.com/docs/8.x/providers#registering -providers
确实,我以望远镜本地安装为例,但您是对的,我也认为这更好。
感谢你的帮助 !
@shokme您的示例运行良好,我理解您的代码,但是我需要花费大量时间才能弄清楚这一点:) 非常感谢您的帮助。
只是一件事,当我禁用自动发现 Meilisearch 时,我在运行搜索时出错(“不支持驱动程序 [meilisearch]。”)
但是通过不禁用它,它可以在我的本地环境中运行。 将很快投入生产。
为什么禁用它很重要?
我试图重现您的错误,唯一的方法是不从App\Providers\MeilisearchServiceProvider
扩展\Meilisearch\Scout\MeilisearchServiceProvider
#$ 。
但是,我向您展示的代码主要来自望远镜包。 所以“dont-discover”默认不会注册包,允许你在需要的时候加载它。 我的错误,你可以避免这种情况。
现在关于App\Providers\MeilisearchServiceProvider
,如果我是对的并且您没有从包中扩展提供程序,那么它可以工作,很好。 但老实说,我不确定在幕后如何处理。
我的猜测是 Meilisearch 包将被注册,然后自定义提供程序将被注册并覆盖客户端单例。 您选择是否扩展该选项,因为我无法给出明确的答案。
顺便说一句,今天 laravel-scout 9 已经发布,支持 meilisearch 作为第一方包,你可能想使用它,这个包的代码已经合并到 scout 中,所以它不会为你改变任何东西。
最有用的评论
你好@desaintflorent ,
我不确定这是您要求的,但根据@hi019所说,您可以覆盖 MeilisearchServiceProvider 以使用自定义 http 客户端。
例子:
在你
config/app.php
然后,您应该通过将以下内容添加到您的 composer.json 来禁用 Meilisearch 被自动发现
如果我没有错过你应该做得好的东西,超时将抛出
MeiliSearch\Exceptions\CommunicationException
如果有人有更好的选择,我会很高兴阅读它:微笑: