| 제목 | 컨트롤러의 메서드를 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
위 문서를 참고 하시면 됩니다. 문서 마지막 부분을 보세요.