Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

455
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!