public function sendDataToMailByCron($campaign_id){ $campaign = Campaign::findOrFail($campaign_id)->with(['domains','publishEmail.subscribers','template'])->get(); try{ // ini_set('max_execution_time',240); $sendData = array(); $sentStatusUpdateId = array(); $count = 1; $email_limit_set = 2000; if($campaign->domains->email_limit){ //$email_limit_set = $campaign->domains->email_limit; } // query add in avariable $query = $campaign->publishEmail->where('sent_status','0')->take($email_limit_set); //here to data is not empty if(count($query) == 0 || is_null($query) || empty($query) ){ return redirect('/campaign')->with('error','Publish Email Not Found '); } foreach($query as $key=> $publishEmail){ $sendData[] = [ 'tbl_pub_ema_id'=> $publishEmail->subscriber_id, 'from_emailid' =>$campaign->domains->domain_email, 'to_name' =>$publishEmail->subscribers->name, 'to_emailid' =>$publishEmail->subscribers->email, 'subject' =>$campaign->subject, 'body' =>$campaign->template->template, ]; $sentStatusUpdateId[] =$publishEmail->id; if($count == 50){ PublishMailByCron::insert($sendData); dispatch(new MakeEmailCronJob($sendData))->delay(now()->addMinutes(1)); Publish_Email::whereIn('id',$sentStatusUpdateId)->update(['sent_status'=>'1']); $count = 0; $sendData = array(); $sentStatusUpdateId = array(); } ++$count; }//for //insert remaining subscriber of last batch if(count($sendData) > 0){ PublishMailByCron::insert($sendData); dispatch(new MakeEmailCronJob($sendData))->delay(now()->addMinutes(1)); Publish_Email::whereIn('id',$sentStatusUpdateId)->update(['sent_status'=>'1']); } }catch(Exception $ex){ return redirect()->back()->with('error',$ex->getMessage()); } return redirect('/campaign')->with('success','Campaign was Publish'); }