Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [KOHANA]wysylanie powiadomien email
Forum PHP.pl > Forum > PHP
17misiek09
mianowicie chodzi mi o wysylanie powiadomien email.
mam serwis ogloszeniowy, ktory zostal zrobiony w kohanie.
co zrobic, abym aplikacja sama mogla wysylac automatyczne powiadomienia email?
np ogloszenie skonczylo swoja waznosc wczoraj. aplikacja sprawdza sobie co 24 godziny czy jakies ogloszenie sie skonczylo, jesli tak to wysyla e-mail do wlasciciela ogloszenia, jesli nie to spi przez najblizsze 24 godziny.

niby mam cos co powinno dzialac, aczkolwiek nie dziala.


pewnie chodzi o crona, ale jak dodac zapytanie?

cos co powinno dzialac, a nie dziala wyglada tak:
  1. <?php
  2.  
  3. class Cron_Controller extends Controller
  4. {
  5.  
  6. public function do_jobs( $hash )
  7. {
  8. if( $hash != Kohana::config('config.cron_hash') )
  9. throw new Exception("Błędny parametr hash");
  10.  
  11. $this->_send_extend_emails();
  12. }
  13.  
  14. private function _send_extend_emails()
  15. {
  16. $adverts = new Adverts_Model();
  17. $emails = new Emails_Model();
  18. $yesterday_expired = $adverts->getYesterdayExpired();
  19. //echo kohana::debug($yesterday_expired);
  20. //die();
  21. foreach( $yesterday_expired as $advert )
  22. {
  23. $data = (array) $advert;
  24. $emails->send($data['contact_email'],null, 'Wygaśnięcie ogłoszenia', View::factory('emails/expired')->bind('data',$data)->render() );
  25. }
  26. }
  27.  
  28.  
  29.  
  30. }


a funkcja getYesterdayExpired() wyglada tak:
  1. public function getYesterdayExpired()
  2. {
  3. $yesterday = date('Y-m-d', mktime(0, 0, 0, date('m'), date('d')-1, date('Y')) );
  4. $this->db->where('expiry_date', $yesterday);
  5. $query = $this->db->get('advertisements');
  6. // die($query->last_query());
  7. return $query->as_array();
  8.  
  9. }


od razu poprosze o pomoc jak poprawnie dodac zapytanie do crona?
w tym momencie zapytanie wyglada mniej wiecej tak:
/home/cos231/domains/moja-domenta.pll/public_html/application/controllers/cron.php
PiotrekM
Twoje zapytanie nie ma prawa działać, bo wywołujesz od razu kontroler - a w KO plik index.php jest głównym plikie bootującym framework.

spróbuj wg. tego schematu:
Kod
php /path/to/index.php --uri=controller/action/etc/etc
17misiek09
dodalem:
Kod
php /domains/mojadomena.pl/public_html/index.php --uri=controller/cron.php


nie generuje nawet bledu
PiotrekM
po pierwsze w Twoim kontrolerze nie ma żadnej akcji, którą mógłbyś wywołać.
Spróbuj zamiast do_job dać action_index

i w cronie:
Kod
php home/cos231/domains/moja-domenta.pll/public_html/index.php --uri=controller/cron/index
17misiek09
hmm zero reakcji...

plik cron.php

znajduje sie w folderze controllers.

moze to cos da...w index.php nie mam zadnego odwolania do cron.php
---------------
edit: jednak reakcja jest - kod bledu:


Kod
Return-path: <cos231@s49.linuxpl.com>
Envelope-to: cos231@s49.linuxpl.com
Delivery-date: Sat, 18 Feb 2012 12:01:01 +0100
Received: from cos231 by s49.linuxpl.com with local (Exim 4.76)
    (envelope-from <cos231@s49.linuxpl.com>)
    id 1Ryi2H-0007c5-Fy
    for cos231@s49.linuxpl.com; Sat, 18 Feb 2012 12:01:01 +0100
From: root@s49.linuxpl.com (Cron Daemon)
To: cos231@s49.linuxpl.com
Subject: Cron <cos231@s49> php home/cos231/domains/moja-domena.pl/public_html/index.php --uri=controller/cron/index
Content-Type: text/plain; charset=ISO-8859-2
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/cos231>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=cos231>
Message-Id: <E1Ryi2H-0007c5-Fy@s49.linuxpl.com>
Date: Sat, 18 Feb 2012 12:01:01 +0100

/bin/sh: php: command not found
PiotrekM
a odwołując się przez przeglądarkę działa?
edit:

Kod
php home/cos231/domains/moja-domenta.pll/public_html/index.php --uri=cron/index
17misiek09
nie moze dzialac, bo przeciez w index.php nie ma zadnego odwolania do funkcji ktora wysyla e-maile...
PiotrekM
Cytat
nie moze dzialac, bo przeciez w index.php nie ma zadnego odwolania do funkcji ktora wysyla e-maile...

jesteś pewny, że wiesz jak działają frameworki?
17misiek09
Cytat(PiotrekM @ 18.02.2012, 12:12:43 ) *
jesteś pewny, że wiesz jak działają frameworki?

nie.

w takim razie co wkleic do przegladarki?

Kod
php home/cos231/domains/moja-domenta.pll/public_html/index.php --uri=cron/index


otwiera sie google...

a w cronie wciaz :
Kod
/bin/sh: php: command not found
PiotrekM
Kod
php home/cos231/domains/moja-domenta.pll/public_html/index.php --uri=cron/index

daj może slasha z przodu...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.