2013-10-05 15 views
5

Mój serwer hostujący stronę to hostmonster.com.cronjob w codeigniter przy użyciu cpanel

Moja aplikacja wykorzystuje framework codeiter.

Mam kod, który wysyła e-maile do moich użytkowników i chcę, aby był automatyczny.

Użyłem cpanel usługi hostingu i starałem się dać komendę jako

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

mój kontroler jest admin, a metoda jest sendDailyEmail a kontroler jest obecny wewnątrz/controllers/folderu administratora aplikacji .

Ustawiłem również wiadomość e-mail z przypomnieniem, gdy uruchamiane jest cronjob.

Przedmiotem email czyta

Cron php -q/HOME1/nazwa_użytkownika/public_html/admin Administrator sendDailyEmail

a ciało mówi

Brak pliku wejściowego określony

Gdzie się nie udać.

Nigdy nie uruchomiłem cronjobs i to jest mój pierwszy raz. Nie jestem również w stanie udzielać poleceń z linii poleceń.

Moja administracja kod sendDailyEmail jest następujący

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); 
} 
+0

usunąłem uwierzytelniania ale gdybym teraz skopiować wkleić adres URL, to po prostu wysyła e-mail z dala do moich użytkowników. Obawiam się, że jeśli ktoś wie, wysyła dalej wiadomości tylko za pomocą adresu URL. Jak ograniczyć to. Używam codeigniter. Cronjob jest uruchamiany przez cpanel. poprzednio Mam ten kod w moim sendDailyEmail if (! $ This-> session-> userdata ('variable')) przekierowanie ("admin/admin", "odśwież"); – spod

Odpowiedz

8

Można użyć wget i ustawić czas na cokolwiek chcesz:

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

Można również użyć curl:

curl --silent http://www.mysite.com/admin/sendDailyEmail 
+0

Cronjob jest zrobione i otrzymałem e-mail z informacją: ** --2013-10-05 11: 20: 01 - http://www.mysite.com/admin/admin/sendDailyEmail Rozpatrywanie www.mysite.com ... 66.147.240.184 Podłączenie do www.mysite.com | 66.147.240.184 |: 80 ... połączone. Żądanie HTTP wysłano, oczekiwanie na odpowiedź ... 200 OK Długość: 0 [text/html] Zapisywanie do: 'sendDailyEmail” 0K 0,00 = 0s 2013-10-05 11:20:11 (0,00 B/s) - zapisano "sendDailyEmail" [0/0] ** Ale wiadomość nie została wysłana – spod

+0

Jeśli wpiszesz 'http: // www.mysite.com/admin/sendDailyEmail' bezpośrednio w przeglądarce, to wyśle e-mail? – doitlikejustin

+0

Tak, raz zalogowałem się jako admin – spod

11

Dla CodeIgniter 2.2.0

Można spróbować to:

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

lub w danym przypadku

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

Współpracuje ze mną .. Cheers!

+1

Mam zamiar spróbować .. wrócić do ciebie po kilku godzinach –

0

mam stoi sam problem podczas, ale po pracy dla mnie

wget http://www.yoursite.com/controller/function 
Powiązane problemy