自動でフォローやいいねを行うアプリ(自分だけで使う)を制作しております。
現在、実際にWebサーバへのデプロイは完了しており、ツイッターとの連携もできているのですが、肝心の自動化ができておりません。
理由としては、以下のようなコマンドをcron設定に追加し、自動でメソッドを実行するとエラーがでてしまうからです。
*/1 * * * * cd /application; php oil refine auto:follow
エラーの内容
Parsing Error - syntax error, unexpected '$twitter_account' (T_VARIABLE) in 場所
ちなみに、ターミナル上でoilファイルがあるディレクトリに移動し、直接php oil refine auto:followを打ち込んで実行すると問題なく機能します。
詳しい方、ご回答よろしくお願いいたします。
以上のことをまとめます。
実現したいこと
自動でフォローやいいねを行う機能の実装
解決したいこと
cronに設定したコマンド(*/1 * * * * cd /application; php oil refine auto:follow)が問題なく実行されるようにしたい。
手動でphp oil refine auto:followを実行すると問題なく実行される。
エラーの内容
Parsing Error - syntax error, unexpected '$twitter_account' (T_VARIABLE) in 場所という構文エラー
該当する箇所のプログラム
エラーが出ている箇所のプログラムの一部を抜粋して掲載します。
public function follow(){ try{ \Log::debug(__FILE__ . "(" . __LINE__ . ") : " . "自動フォローを開始します"); $this->running_follow = null; // 最後に実行したフォロー処理のIDを記憶 $this->running_target_account = null; // 最後に抽出したターゲットアカウントIDを記憶 register_shutdown_function(array($this, "follow_shutdown_callback")); foreach(\Model_TwitterAccount::yield_all() as $twitter_account){ $this->running_twitter_account = $twitter_account; if($twitter_account->follow_flag === '0'){ continue; } if($twitter_account->delay_follow >= time()){ \Log::debug("twitter_account_id = $twitter_account->id, delay_follow によりフォロー処理を中断します"); continue; } ...
public static function yield_all(){ $blocksize = 10; $offset = 0; while(true){ $twitter_accounts = Model_TwitterAccount::find_all($blocksize, $offset); if($twitter_accounts === null){ break; } foreach($twitter_accounts as $twitter_account){ yield $twitter_account; } $offset += $blocksize; } return null; }
上のfollowメソッド内のforeach文の中でyield_allメソッドが実行されますが、その際にyield_allメソッド内の
yield $twitter_account;
の行で上記したエラーが検出されているようです。
また、このyield_allメソッドは自動いいねなどを行うときにも使用しますが、そちらでも同様にエラーが出てしまいます。
しかし、手動で実行すれば問題なく動作します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。