<?php namespace App\Jobs; use Illuminate\Bus\Queueable; use Illuminate\Queue\SerializesModels; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Support\Facades\Queue; class SendSMS implements ShouldQueue { use InteractsWithQueue, Queueable, SerializesModels; /** * Create a new job instance. * * @return void */ protected $data; public function __construct($data) { $this->data = $data; } /** * Execute the job. * * @return void */ public function handle() { $items_limit = 100; $delay = 10; $data_to_process = []; $data_to_dispatch = []; if (count($this->data) > $items_limit) { $data_to_process = array_slice($this->data, 0, $items_limit); $data_to_dispatch = array_slice($this->data, $items_limit); Queue::later($delay, new SendSMS($data_to_dispatch)); } else { $data_to_process = $this->data; } foreach($data_to_process as $item) { send_sms($item['message'], $item['mobile']); } } }