как cronjob выполнять в CI .. для вызова конкретного контроллера автоматически вызывать тех, кто отправляет электронную почту - PullRequest
0 голосов
/ 05 июня 2019

На самом деле я хочу выполнить задание cron в то время, когда определенное время сеанса автоматически отправляет электронное письмо, также я вызываю контроллер, определенный в CI, но он не может выполнить задание cron .?

ошибка:

/ home / a7ndzp5tm2vd / public_html / projects / PolicyManager / insurancecompany / application / controllers / Sendsms_email.php: строка 1:? Php: Нет такого файла или каталога / home / a7ndzp5tm2vd / public_html / projects / PolicyMan/insurancecompany/application/controllers/Sendsms_email.php: строка 3: синтаксическая ошибка рядом с неожиданным токеном 'BASEPATH' /home/a7ndzp5tm2vd/public_html/projects/PolicyManager/insurancecompany/application/controllers/Sendsms_email. * 7: 1007: 1007:1008 *

<?php

  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 class Sendsms_email extends CI_Controller {

     public function __construct() {
         parent::__construct();
         $this->load->helper('url');
         $this->load->model('Product');
         $this->load->model('queries');
         $this->load->model('User_model');
         $this->load->library('input');
     }


     public function index() { 
         $this->load->library('email');

         if($this->input->is_cli_request())
         { 
         @$r1 = $this->user_model->smsten();
         //print_r($r1);
         if ($r1 != '') {

             foreach ($r1 as $key => $users):

                 $encryption_key = 1234567812345678;
                 $iv = chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) .                      chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0);

                 $cn = $users['contactno'];
                 $cn1 = $cn . ':' . $iv;
                 $econtactnol = explode(':', $cn1);
                 $dcontactnol = openssl_decrypt($econtactnol[0], AES_256_CBC, $encryption_key, 0, $econtactnol[1]);

                 $cname = $users['name'];
                 $cname1 = $cname . ':' . $iv;
                 $ename1 = explode(':', $cname1);
                 $dname1 = openssl_decrypt($ename1[0], AES_256_CBC, $encryption_key, 0, $ename1[1]);

                 $emailid = $users['email'];
                 $emailid1 = $emailid . ':' . $iv;
                 $eemailid = explode(':', $emailid1);
                 $demail = openssl_decrypt($eemailid[0], AES_256_CBC, $encryption_key, 0, $eemailid[1]);

                 $p_vehicle= $users['vechicle_no'];
                   $p1_vehicle = $p_vehicle . ':' . $iv;
                   $v_vehicle[] = explode(",", $p_vehicle);

                   //print_r($v_vehicle);
                 foreach ($v_vehicle as $k_vehicle => $v1_vehicle) {
                     foreach ($v1_vehicle as $k1_vehicle => $k2_vehicle) {
                         $ss_vehicle[] = $k2_vehicle . ":";
                     }
                 }
                 $count_v_vehicle=  count($ss_vehicle);
                 for ($i = 0; $i < $count_v_vehicle; $i++) {

                     $dvehicleno = openssl_decrypt($ss_vehicle[$i], AES_256_CBC, $encryption_key, 0);

                      $table_vehicle_value[] = $dvehicleno ;
                 }

                 $p = $users['GROUP_CONCAT(p.policyno)'];
                 $p1 = $p . ':' . $iv;

                // $epolicydetail = explode(':', $p1);
                 //print_r($p);
                 $v[] = explode(",", $p);

                 foreach ($v as $k => $v1) {
                     foreach ($v1 as $k1 => $k2) {
                         $ss[] = $k2 . ":";
                     }
                 }
                 $count_v = count($ss);
                 for ($i = 0; $i < $count_v; $i++) {

                     $dpolicydetail = openssl_decrypt($ss[$i], AES_256_CBC, $encryption_key, 0);


                     $shw2[] = $dpolicydetail . ",";
                      $table_poilcy_value[] = $dpolicydetail ;
                 }
                 $sa = rtrim(join($shw2), ',');
                 $count_policy= count($table_poilcy_value);
                 echo"\n"; //                echo $dcontactnol;
                 $contactno = $dcontactnol; /* Separate mobile no with commas */

                 $message = "Your policy $sa will be expired in 10 days.";
                // print_r($message);

                $senderId = "DEMOOS"; /* Sender ID */
                $serverUrl = "msg.msgclub.net";
                $authKey = "14f5d3ca75bc4de1761d4af9e7d83d38"; /* Authentication key (get from sms service provider) */
                $route = "1";
                $this->sendsmsGET($contactno, $senderId, $route, $message, $serverUrl, $authKey);


                 $output='<h3>'.$message.'</h3>';
                 $output .= '<table style="width:100%;  border: 1px solid black;

                border-collapse: collapse;">';
                 $output .= '<tr style="width:100%;  border: 1px solid black;
                     border-collapse: collapse;">
                    <td style="text-align:center; border: 1px solid  black; border-collapse: collapse;" colspan="3">Policy Reminder</td>
                    </tr>';
                 $output .= '
                      <tr>

                      <tr style="width:100%;  border: 1px solid black;
                     border-collapse: collapse;">
                     <td style="width:30%;  border: 1px solid black;
                     border-collapse: collapse;">Policy No</td>
                     <td style="width:50%;border:1px solid black;border-collapse:collapse">Vehicle No.</td>

                     </tr>';

                       for ($record=0;$record<$count_policy;$record++)
                 {
                      $output .= '  <tr style="width:100%;  border: 1px solid black;
                      border-collapse: collapse;" >
                      <td style="  border: 1px solid black;
                      border-collapse:  collapse;">' . $table_poilcy_value[$record] . '</td>
                     <td style="  border: 1px solid black;
                      border-collapse:  collapse;">'.$table_vehicle_value[$record].'</td>
                     </tr>
                      ';
                }

                 $output .= '</table>'; //                print_r($output);
                 $to_email = "xyz@gmail.com";

                 $from_email = "xyz@gmail.com";

                 $subject = "reminder for policy";

                        $config['mailtype'] = 'html';
                     $this->email->initialize($config);
                 $this->email->from($from_email);
                 $this->email->to($to_email);
                 $this->email->subject($subject);
                 $this->email->message($output);

                 //Send mail

                 if($this->email->send())
                 { //                     echo "succesfully";
                 }

                 unset($v_vehicle);
                 unset($v);
                 unset($ss_vehicle);
                 unset($ss);
                 unset($dcontactnol);
                 unset($shw2);
                 unset($table_poilcy_value);

             endforeach;
         }  }

      }

 }

 ?>

1 Ответ

0 голосов
/ 05 июня 2019

Вы не показываете точно, КАК вы пытаетесь запустить cron, но вот как вы должны:

* * * * * php /home/path/to/main/codeigniter/index.php controller_name method_name "parameter"

Параметр необязательный. Замените * * * * * на желаемое расписание и путь к фактическому пути. Например, сайт, над которым я работаю сегодня, живет на /home/webuser/public/www/, поэтому, если бы я хотел запускать что-то (метод, называемый ежечасной уборкой) на моем выделенном контроллере cron (обычно называемом «Cron») каждый час в тот час, когда я делать:

00 * * * * php /home/webuser/public/www/index.php cron hourly_housekeeping

В качестве меры предосторожности вы должны запускать задачи cron на выделенном контроллере, доступ к которому через браузер невозможен. Вы можете использовать Codeigniter is_cli(), чтобы убедиться, что выполнение инициируется через CLI, и отказаться от запуска в противном случае. Для этого у вас может быть что-то подобное в вашей конструкции контроллера:

if (!$this->input->is_cli_request()) show_error('Here be dragons. No browsers served here');

Надеюсь, ты сможешь заставить его работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...