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.と表示される場合がありますが、ここ見る