私はあなたの素晴らしいチュートリアルに従ってDigitalOceanドロップレットを作成し、Laravelでうまく使用しています👌
私が抱えている唯一の問題は、サーバーがダウンしているとき(手動で停止したとき、またはCPUが100%を超えたとき)です。
エラーを表示できるように、短いタイムアウトを設定できる場所が見つかりませんか?
現在、デッドサーバーからの応答を待って無期限にロードしています。
こんにちは@desaintflorent 、私が間違っていなければ、このパッケージはタイムアウトを設定するオプションを提供していません。 私はlaravelユーザーではないため、laravelの回避策を提供することはできません。
誰かが回避策を知っている場合は、この問題についてお気軽に共有してください🙂
ドキュメントのDOチュートリアルが気に入ってくださったことをうれしく思います。すばらしいドキュメントとの統合を提供するために、最善を尽くしています。
これは、カスタムGuzzleHTTPインスタンスをクライアントに渡すことにより、Meilisearch PHPクライアントレベルで実行する必要があると思います: https ://github.com/meilisearch/meilisearch-php#customize -your-http-client
現在、これを行う方法はありません。 たぶん、ユーザーが設定でカスタムMeilisearchPHPクライアントを渡すことを許可できます
これは素晴らしい追加になるでしょう。 ただし、コンテキストを説明するこの問題によると、このリポジトリには、larvel / scoutと一致しない新しい追加はありません。
よりmeilisearch-laravel-scout-extendedプラグインとなる新しいリポジトリを作成する可能性があり、この種の可能性をそれに統合します。 次のレポジトリ(またはこのレポジトリの次のバージョン)の改善の良いアイデアなので、この問題を公開しました。
こんにちは@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
}
誰かがより良い選択肢を持っているなら、私はそれを読んでうれしいです:smile:
@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
をスローします誰かがより良い選択肢を持っているなら、私はそれを読んでうれしいです:smile: