mercredi 27 avril 2022

Laravel Console Command Failing to Complete Execution

I have the script below which is used to send messages (sms, email & whatsapp) to some 300k customers. Things where working fine before but for some days now the script is bugging (it freezes at some point in the loop. I can see this with the progress bar which doesn't move further). I have checked laravel.log and there is no particular error message. The script itself does not output any error message.

Below is the code:

/**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        AccountsCstm::where('authentification_c', 1)->chunk(10000, function ($customer_details) {

            $bar = $this->output->createProgressBar(count($customer_details));

            $bar->start();

            foreach ($customer_details as $customer_detail) {
                // Get customer bills and send through the appropriate channel. He could have multiple bills
             if (isset($customer_detail->account->sic_code)) {

                $bills = TbBillsInfos::where('contract_number', $customer_detail->account->sic_code)->where('bill_status', 'UNPAID')->get();
                if (isset($bills)){
                    foreach ($bills as $bill) {
                        // Send messages.
                        if ($customer_detail->is_whatsapp_c) {

                            $message = $this->bill_message($customer_detail, $bill, 'WhatsApp');
                            // Send the message
                            $this->send_whatsapp_message($customer_detail->phone_4_c, $message, $customer_detail->contract_number_c);
                            // Record the message in database
                            $this->save_message('WhatsApp', $customer_detail->phone_4_c, null, $message, $customer_detail->account->id);

                        } elseif ($customer_detail->is_sms_c) {

                            $message = $this->bill_message($customer_detail, $bill, 'SMS');
                            // Send the message
                            $this->send_sms($customer_detail->phone_4_c, $message);
                            // Record the message in database
                            $this->save_message('SMS', $customer_detail->phone_4_c, null, $message, $customer_detail->account->id);

                        } elseif ($customer_detail->is_mail_c) {

                            $message = $this->bill_message($customer_detail, $bill, 'Email');
                            // Send the message
                            $this->send_email($customer_detail, $bill, $message);
                            // Record the message in database
                            $this->save_message('Email', null, $customer_detail->mail_c, $message, $customer_detail->account->id);

                        }
                    }
                }

              }

                $bar->advance();
            }

            $bar->finish();
        });

        // Delete all record from the tb_bills_infos table
        // Set the auto-increment value to 0
        TbBillsInfos::truncate();

        Log::info('send:unpaid-bill-messages: Command executed successfully');
    }

Please can someone point out what can be the issue with the above script? Why is it bugging and not completing execution ? Why is it freezing at some point in the loop?

See for example the command since April 21, where as before it will complete execution in about 15 minutes or less

enter image description here

I have equally checked RAM usage on the server and only 1GB out of 8GB is being used. So the server is stable



from Newest questions tagged laravel-5 - Stack Overflow https://ift.tt/uxE69f1
via IFTTT

Aucun commentaire:

Enregistrer un commentaire