Criei um droplet DigitalOcean seguindo seu ótimo tutorial, e estou usando com sucesso com Laravel 👌
O único problema que tenho é quando o servidor está inativo (parado manualmente ou CPU em mais de 100%).
Não consigo encontrar onde posso definir um tempo limite curto para exibir um erro?
No momento está carregando indefinidamente esperando uma resposta do servidor morto.
Olá @desaintflorent , se não estiver errado este pacote não fornece uma opção para definir um tempo limite. Eu não sou um usuário laravel, então não posso fornecer nenhuma solução alternativa com laravel.
Se alguém souber de uma solução alternativa, sinta-se à vontade para compartilhá-la sobre esse problema 🙂
Fico feliz em ler que você gostou do tutorial DO em nossos documentos, fazemos o nosso melhor para fornecer integrações com boa documentação!
Acredito que isso teria que ser feito no nível do Meilisearch PHP Client, passando uma instância personalizada do GuzzleHTTP para o cliente: https://github.com/meilisearch/meilisearch-php#customize -your-http-client
Não há uma maneira de fazer isso com o atualmente. Talvez possamos permitir que o usuário passe um cliente PHP Meilisearch personalizado na configuração
Esta seria uma grande adição. No entanto, de acordo com esta edição em que explico o contexto, este repositório não terá nenhuma nova adição que não seja consistente com larvel/scout
Podemos criar um novo repositório que será mais um plugin estendido do meilisearch-laravel-scout, e vamos integrar esse tipo de possibilidade nele. Deixo esse problema em aberto, pois é uma boa ideia de melhoria para o próximo repositório (ou a próxima versão deste repositório).
Olá @desaintflorent ,
Não tenho certeza se foi isso que você pediu, mas com base no que @hi019 disse, você pode substituir o MeilisearchServiceProvider para usar um cliente http personalizado.
exemplo:
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]));
});
}
}
Em você config/app.php
'providers' => [
// Other Service Providers
App\Providers\MeilisearchServiceProvider::class,
],
Em seguida, você deve desabilitar a descoberta automática do Meilisearch adicionando o seguinte ao seu composer.json
...
"extra": {
"laravel": {
"dont-discover": [
"meilisearch/meilisearch-laravel-scout"
]
}
},
...
E se eu não perder algo, você deve ser bom, o tempo limite lançará um MeiliSearch\Exceptions\CommunicationException
try {
$movies = Movie::search('b')->get();
} catch (\MeiliSearch\Exceptions\CommunicationException $e) {
// do something
}
Se alguém tiver uma opção melhor, ficarei feliz em ler :smile:
@shokme , você provavelmente deve registrar o provedor em app.php: https://laravel.com/docs/8.x/providers#registering -providers
@shokme , você provavelmente deve registrar o provedor em app.php: https://laravel.com/docs/8.x/providers#registering -providers
De fato, peguei o exemplo da instalação local do telescópio, mas você está certo, também acho que isso é melhor.
Obrigado a todos por sua ajuda !
@shokme seu exemplo está funcionando perfeitamente, entendi seu código, mas levaria muito tempo para descobrir isso :) Então, muito obrigado pela sua ajuda.
Só uma coisa, quando desabilito a descoberta automática do Meilisearch, tive um erro ao executar uma pesquisa ("Driver [meilisearch] não suportado." )
Mas ao não desativá-lo, ele está funcionando no meu ambiente local. Vai tentar em produção em breve.
Por que é importante desativá-lo?
Tentei reproduzir seu erro e a única maneira foi não estender \Meilisearch\Scout\MeilisearchServiceProvider
de App\Providers\MeilisearchServiceProvider
.
Mas, o código que mostrei para você é principalmente do pacote do telescópio. Portanto, "dont-discover" não registrará o pacote por padrão e permitirá que você o carregue quando necessário. meu erro, você pode evitar isso .
Agora sobre App\Providers\MeilisearchServiceProvider
, se eu estiver certo e você não estender o provedor do pacote, funciona, bom. Mas, para ser honesto, não tenho certeza de como isso será tratado nos bastidores.
Meu palpite é que o pacote Meilisearch será registrado e, em seguida, o provedor personalizado será registrado e substituirá o singleton do cliente. Sua escolha de estender ou não essa, pois não sou capaz de dar uma resposta clara.
A propósito, hoje o laravel-scout 9 foi lançado com o suporte do meilisearch como pacote de primeira parte, você pode querer usá-lo, o código deste pacote foi mesclado dentro do scout para que não mude nada para você.
Comentários muito úteis
Olá @desaintflorent ,
Não tenho certeza se foi isso que você pediu, mas com base no que @hi019 disse, você pode substituir o MeilisearchServiceProvider para usar um cliente http personalizado.
exemplo:
Em você
config/app.php
Em seguida, você deve desabilitar a descoberta automática do Meilisearch adicionando o seguinte ao seu composer.json
E se eu não perder algo, você deve ser bom, o tempo limite lançará um
MeiliSearch\Exceptions\CommunicationException
Se alguém tiver uma opção melhor, ficarei feliz em ler :smile: