Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

448
Visualizações
Envíe notificaciones automáticas a los taxistas pero con un retraso en cada ciclo - php laravel

Entonces, este es un servidor de despacho de taxis simple integrado en php Laravel que envía notificaciones automáticas a los taxistas en línea coincidentes dentro del radio del Cliente, utilizando un bucle foreach:

 foreach ($Providers_active as $key => $Provider) { (new SendPushNotification)->IncomingRequest($Provider->id); }

Obtengo todos los Controladores en línea en el radio del Cliente usando esto:

 $Providers_active = Provider::with('service') ->select(DB::Raw("(6371 * acos( cos( radians('$latitude') ) * cos( radians(latitude) ) * cos( radians(longitude) - radians('$longitude') ) + sin( radians('$latitude') ) * sin( radians(latitude) ) ) ) AS distance"),'id') ->where('status', 'online') ->orderBy('distance','asc') ->get();

y mi función IncomingRequest se ve así:

 public function IncomingRequest($provider){ $provider = Provider::where('id',$provider)->with('profile')->first(); return $this->sendPushToProvider($provider->id, "New Ride Request"); }

Pero dado que este código se ejecuta literalmente en una milésima de segundo, todos los controladores coincidentes reciben la notificación automática al mismo tiempo. Pero estoy tratando de enviarles las notificaciones automáticas una por una con un retraso de quizás un par de segundos.

Tenga en cuenta:

  1. Intenté usar un bucle while dentro de él comparando el retraso de tiempo.
  2. También estoy considerando usar el método sleep().

Pero estoy bastante seguro de que esas no son las mejores maneras de hacerlo.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Los pondría en una cola de trabajos. Puede limitar la frecuencia con la que se procesa un trabajo. Entonces, si desea enviar una notificación cada 10 segundos, puede hacerlo.

https://laravel.com/docs/8.x/queues#rate-limiting

Aquí hay un código de ejemplo que tienen en los documentos. Esto muestra perHour() pero también hay perMinute() , por lo que si usó perMinute(6) debería enviar uno cada 10 segundos.

 use Illuminate\Cache\RateLimiting\Limit; use Illuminate\Support\Facades\RateLimiter; /** * Bootstrap any application services. * * @return void */ public function boot() { RateLimiter::for('backups', function ($job) { return $job->user->vipCustomer() ? Limit::none() : Limit::perHour(1)->by($job->user->id); }); }
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda