제목 | 컨트롤러의 메서드를 crond로 실행할수있나요? | ||
---|---|---|---|
글쓴이 | 세콩 | 작성시각 | 2012/01/13 14:12:11 |
|
|||
RSS받아와서 DB로저장하는 컨트롤러를 만든후 자동화작업을 시도해볼까합니닷!! (자동화작업 연결을 못시켜서 수동으로 url쳐서 RSS를 동기화하고있...................어...........요;;) 현재 "News" 라는 컨트롤러에 syncRSS() 라는 메서드를 수행하면 RSS를 받아와 신규정보일경우 DB로저장까지 하도록 구현해놓았습니닷.. 나름 조사한답시고 cron 을 구글링한뒤 ex1) 2 * * * * lynx http://도메인.com/news/syncRSS 라고 crontab을 저장하고 재시작을 하고 결과를 보았더니 동작을 안하네요 (개념이 부족합니다 핰핰..) 아예 스크립트를 따로 만들어서 설정을 해야하는건지 구글링 + 삽질만 하다가 잠시 쉬러가기전.. 글을 남겨봅니다 ㅠㅠ (맘같아서는 CI의 메서드만 어떻게 수행시키고 싶은데..) ex2) 2 * * * * /usr/bin/php -q /var/www/프로젝트/syncRSS.php (이게맞는지는 모르겠네요..) 만약 ex2 가 맞다면 syncRSS 스크립트는 어떤식으로 구성해야할지.. 염치 불구하고 조언 부탁드립니닷!! 도와주옵소서~~ ↓ 컨트롤러 내용 혹시몰라서 첨부합니닷!! class News extends CI_Controller { private $resource = array(); private $items = array(); function __construct() { parent::__construct(); $this->spdev->setLanguage(); $this->load->library('startup/layout'); } function index() { $this->showList(); } function showList() { // 모델로드 $this->load->model('table/news_model'); $data['news'] = $this->news_model->find_news(); // 레이아웃 $this->layout->view('news/article/newsList', $data); $this->layout->output(); } /** * RSS받아온뒤 새로운소식인경우 DB로 저장!! */ function syncRSS() { $url = array("http://www.onsuccess.me/?feed=rss2", "http://venturesquare.net/rss"); $this->_recieveRSS($url); $this->_saveRSS(); } /** * 해당 XML의 item들을 변수에 담아놓자!! ($this->items) * @param unknown_type $url */ private function _recieveRSS($url) { // RSS를 받을 주소지부터 셋팅을 하고!! if(is_array($url)) $this->resource = array_merge($this->resource, $url); else $this->resource = $url; // 그다음엔 값을 받아와야겟지?? $i = 0; foreach ($this->resource as $key => $url) { $xml[$key] = simplexml_load_file($url); // 받아온 XML중 item들만 가지고 있자!! foreach ($xml[$key]->channel->item as $val) { $this->items[$i++] = $val; } } } /** * 아이템들을 DB로저장!! */ private function _saveRSS() { // 모델로드 $this->load->model('table/news_model'); // 정보저장 foreach ($this->items as $item) { $row = array ( 'pub_date' => strftime("%Y-%m-%d %H:%M:%S", strtotime($item->pubDate)), 'title' => ''.$item->title, 'link' => ''.$item->link ); $where = array('title' => ''.$item->title); if(!$this->news_model->get_news_count($where)) $this->news_model->add_news($row); } } } |
|||
다음글 | 브라우저 캐슁에 관련하여 질문입니다.ㅜㅜ (3) | ||
이전글 | form validation 히스토리에 대해 질문이 있... (3) | ||
타로
/
2012/01/13 14:34:35 /
추천
0
|
세콩
/
2012/01/13 14:46:32 /
추천
0
오오.......... 감사합니다
한줄기 빛을 보았습니다~~~~~~~ 유휴~~ ps)유저가이드를 더열심히 보겠습니다 ㅠ.ㅠ |
타로
/
2012/01/13 15:57:48 /
추천
0
CI 접한지 이제 4일째이랍니다. ^^
저는 유저가이드 뿐 아니라 레퍼런스 서적일지라도 처음은 모조건 소설책 읽듯 읽는 습관을 가졌습니다. 끝까지 모두 읽기 전엔 참조하지 않습니다. 어떤 소스코드도 가져오지 않습니다. 준비되어 있지 않은 상태에서는 내 것으로 만들 수 없기 때문입니다. 이런 습관들은 잃는것 보다 얻는것이 더 큽니다. 제 경험이거든요. ^^ 각 항목을 꼼꼼히 보느니 차라리 편한 맘으로 한번쯤 쭈욱 읽어 보신다면 기필코 많은 도움이 되시리라 믿습니다. 외람된 잔소리였다면 사과드립니다. 늘 행복하세요. |
세콩
/
2012/01/13 16:23:03 /
추천
0
잔소리라니요~!! 저~얼~때 아닙니닷
ps)아직 배울게 많은 학생이옵니다 이제곧 복학.. 뼈가되고 살이되는 조언 감사합니다~~ |
DJ구스
/
2012/01/13 23:14:50 /
추천
0
cat cron.close_games_by_autobot.sh 쉘스크립의 내용
/usr/bin/php -q ~/html/index.php bo aru_bot close_running_games CI는 없으면 개발 못하게 되어버린 CI앓이 DJ.구스.. ps. 개발자분 중 클럽 좋아하시는분?? <?php if (!defined('BASEPATH')) exit('No direct script access allowed'); class Aru_bot extends CI_Controller { function __construct() { parent::__construct(); //$this->output->enable_profiler(FALSE); } public function close_running_games() { if(TRUE === $this->input->is_cli_request()) { $this->load->model('mod_game', '', TRUE); $this->mod_game->update_close_game_by_bot(); } } } |
세콩
/
2012/01/14 15:57:43 /
추천
0
자세한 스크립트까지~~
우왕굳ㅋ 감사합니다~~~~
|
http://codeigniter-kr.org/user_guide_2.1.0/general/cli.html
위 문서를 참고 하시면 됩니다. 문서 마지막 부분을 보세요.