cronjob в codeigniter с использованием cpanel

Сервер хостинга моего веб-сайта — hostmonster.com.

В моем приложении используется структура codeigniter.

У меня есть код, который отправляет электронные письма моим пользователям, и я хочу сделать это автоматически.

Я использовал cpanel службы хостинга и попытался дать команду как

php -q www.mysite.com/admin admin sendDailyEmail

мой контроллер — admin, а метод — sendDailyEmail, а контроллер находится в папке application/controllers/admin.

Я также установил напоминание по электронной почте каждый раз, когда запускается cronjob.

Тема письма гласит

Cron php -q /home1/username/public_html/admin admin sendDailyEmail

и тело говорит

Не указан входной файл

Где я ошибаюсь.

Я никогда не запускал cronjobs, и это мой первый раз. Я тоже не умею давать инструкции по командной строке.

Мой код администратора sendDailyEmail выглядит следующим образом

function sendDailyEmail() {
    $data = $this->admin_model->getDailyData();
    foreach ($data as $u) {
    if($u->Daily){
     //if(!$u->Amount){
       if ($u->Email=='[email protected]') {

                $user['user_data']['FirstName'] = $u->FirstName;
                $user['user_data']['LastName'] = $u->LastName;
                $user['user_data']['Id']=$u->Id;

                $this->email->clear();
                $this->email->to($u->Email);
                $this->email->from('[email protected]', 'MySite');
                $this->email->subject("My Subject");
                $msg = $this->load->view('emails/daily_view', $user, true);
                $this->email->message($msg);
                if ($this->email->send())
                    $data['message'] = "Daily Emails has been sent successfully";
                else
                    $data['message'] = "Daily Emails Sending Failed";
            }
        }
    }
    $data['main_content']['next_view'] = 'admin_home_view';
    $this->load->view('includes/admin_template', $data);
}

person spod    schedule 05.10.2013    source источник
comment
Я удалил аутентификацию, но если я сейчас скопирую и вставлю URL-адрес, он просто отправит электронное письмо моим пользователям. Я боюсь, что если кто-то знает, они будут продолжать отправлять электронные письма, просто используя URL-адрес. Как мне ограничить это. Я использую кодигнитер. Cronjob запускается через cpanel. ранее у меня был этот код в моем sendDailyEmail if (!$this-›session-›userdata('variable')) redirect('admin/admin', 'refresh');   -  person spod    schedule 26.12.2013


Ответы (4)


Вы можете использовать wget и установить время как угодно:

wget http://www.mysite.com/admin/sendDailyEmail

Вы также можете использовать curl:

curl --silent http://www.mysite.com/admin/sendDailyEmail
person doitlikejustin    schedule 05.10.2013
comment
Задание cron выполнено, и я получил электронное письмо с текстом ** --2013-10-05 11:20:01-- mysite.com/admin/admin/sendDailyEmail Разрешение www.mysite.com... 66.147.240.184 Подключение к www.mysite.com|66.147.240.184|:80... подключено. HTTP-запрос отправлен, ожидание ответа... 200 OK Длина: 0 [text/html] Сохранение в: sendDailyEmail' 0K 0.00 =0s 2013-10-05 11:20:11 (0.00 B/s) - sendDailyEmail' сохранено [0/0] ** Но письмо не отправлено - person spod; 05.10.2013
comment
Если вы введете http://www.mysite.com/admin/sendDailyEmail прямо в браузере, будет ли отправлено электронное письмо? - person doitlikejustin; 05.10.2013
comment
Попробовал это в моей среде общего хостинга и получил отказ в доступе для wget, а запрос был заблокирован Mod Security для curl. - person mpemburn; 03.12.2013

Для CodeIgniter 2.2.0

Вы можете попробовать это:

 php-cli /home/username/public_html/index.php controller method

или в вашем случае

 php-cli /home/username/public_html/index.php admin sendDailyEmail 

Он отлично работает со мной .. Ура!

person JiNexus    schedule 16.10.2014
comment
я собираюсь попробовать ..отпишитесь через несколько часов - person Ravi Mane; 28.06.2016
comment
это помогло мне. по какой-то причине cpanel не запускает скрипты с бинарником php, а с php-cli. - person Binar Web; 10.03.2019


я столкнулся с той же проблемой, но после работы для меня

wget http://www.yoursite.com/controller/function
person Community    schedule 28.06.2016