twitter BOT作成しようとしてみた その2(補足):cron使ってみた
追記 4/14
色々やってみた結果、セッションは使用できない事が判明!!(SESSION IDが保持できないため)
なので、下記はあんまり当てになりませんが、せっかく書いたので、とりあえず置いときます
ちゃんと動くのはこちら→
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
前回の補足のようなものです
わざわざ外部から、RSSを取得するのを落としてこなくても、cakephp内で全部できてしまいました
変なことをしてしまった><
<?php
App::import('Core', 'HttpSocket');App::import('Core', 'Xml');function search(){
$HttpSocket = new HttpSocket();
$url = 'http://d.hatena.ne.jp/megane_bomb/rss';
$ret = $HttpSocket->get($url);if ($ret) {
$Xml = new Xml($ret);
$data = $Xml->toArray();
}//記事入っているか確認
if(!$this->Session->check('title')){
$title = h($data['RDF']['Item']['0']['title']);
$this->Session->write('title',$title);
}else{
//セッションがはいっていて、最新の記事と一致しなかったら、ツイートする。
if(h($data['RDF']['Item']['0']['title']) !== $this->Session->read('title')){$title = h($data['RDF']['Item']['0']['title']);
$url = h($data['RDF']['Item']['0']['link']);
$text = $title.$url;
$this->Twitter = ConnectionManager::getDataSource('twitter');
//ここでツイートしてます
//$this->Twitter->status_update($text);
//念のため削除してから、書き込む
unset( $_SESSION["title"] );
$this->Session->write('title',$title);
}
}
}
★cronを使ってcakephpにアクセスしたいと思います
cron設定
$crontab -e
とコマンドを打って下記を書き込む(これは5分ごとに実行されます)
0,5,10,15,20,25,30,35,40,45,50,55 * * * * php -f /Library/WebServer/Documents/www/files/cron.php
※対象ファイルは各自変える
ファイルを作成
これは、http://example.com/teeets/search/ というフォルダにアクセスしたい場合
→cakephpと同じ階層にファイルを配置しますたとえばcron.phpとかで作成
<?php
$_GET['url'] = "tweets/search/";
require_once( dirname( dirname(__FILE__) ) . "index.php" );index.phpの部分は
echo dirname( dirname(__FILE__));でファイルパス見ながら
〜/app/index.phpとなるように調節してください。
memo
・You have mail.と表示される場合がありますが、ここ見る