Я создал дроплет DigitalOcean, следуя вашему замечательному руководству, и успешно использую его с Laravel 👌
Единственная проблема, с которой я сталкиваюсь, это когда сервер не работает (остановлен вручную или процессор загружен более чем на 100%).
Я не могу найти, где я мог бы установить короткий тайм-аут, чтобы я мог отобразить ошибку?
Прямо сейчас он загружается бесконечно, ожидая ответа от мертвого сервера.
Привет @desaintflorent , если я не ошибаюсь, этот пакет не предоставляет возможность установить тайм-аут. Я не пользователь laravel, поэтому я не могу предложить обходной путь с laravel.
Если кто-то знает обходной путь, не стесняйтесь поделиться им по этой проблеме 🙂
Рад узнать, что вам понравился учебник по DO в нашей документации, мы делаем все возможное, чтобы обеспечить интеграцию хорошей документацией!
Я считаю, что это нужно сделать на уровне клиента Meilisearch PHP, передав клиенту собственный экземпляр GuzzleHTTP: https://github.com/meilisearch/meilisearch-php#customize -your-http-client
В настоящее время нет способа сделать это. Может быть, мы могли бы разрешить пользователю передавать пользовательский PHP-клиент Meilisearch в конфигурации
Это было бы отличным дополнением. Однако, согласно этой проблеме , где я объясняю контекст, в этом репозитории не будет никаких новых дополнений, которые не будут соответствовать 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,
],
Затем вы должны отключить автоматическое обнаружение Meilisearch, добавив следующее в ваш composer.json
...
"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] не поддерживается».)
Но, не отключая его, он работает в моей локальной среде. Скоро попробую в производстве.
Почему важно его отключить?
Я попытался воспроизвести вашу ошибку, и единственным способом было не расширять \Meilisearch\Scout\MeilisearchServiceProvider
с App\Providers\MeilisearchServiceProvider
.
Но код, который я вам показал, в основном из пакета telescope. Таким образом, «dont-discover» не будет регистрировать пакет по умолчанию и позволит вам загрузить его при необходимости. моя ошибка, вы можете избежать этого .
Теперь о App\Providers\MeilisearchServiceProvider
, если я прав и вы не продлеваете провайдера из пакета, то работает, хорошо. Но, честно говоря, я не уверен, как это будет обрабатываться за кулисами.
Я предполагаю, что пакет Meilisearch будет зарегистрирован, а затем будет зарегистрирован пользовательский поставщик и переопределит синглтон клиента. Ваш выбор, расширять или нет на этом, поскольку я не могу дать четкого ответа.
Кстати, сегодня laravel-scout 9 был выпущен с поддержкой meilisearch в качестве основного пакета, вы можете использовать его, код этого пакета был объединен внутри scout, поэтому он ничего не изменит для вас.
Самый полезный комментарий
Привет @desaintflorent ,
Я не уверен, что это то, о чем вы просили, но, основываясь на том, что сказал @ hi019 , вы можете переопределить MeilisearchServiceProvider для использования собственного http-клиента.
пример:
В тебе
config/app.php
Затем вы должны отключить автоматическое обнаружение Meilisearch, добавив следующее в ваш composer.json
И если я ничего не пропущу, вы должны быть в порядке, тайм-аут выкинет
MeiliSearch\Exceptions\CommunicationException
Если у кого-то есть лучший вариант, буду рад прочитать :smile: