風柳メモ

ソフトウェア・プログラミング関連の覚書が中心。

twitterbot1.3が、さくらのレンタルサーバ上で動かない件

ちょっと気になって

作ったbotスクリプト、さくらだと動かないのか。php.iniとかなんかそんなんなのかなあ・・・ http://bit.ly/47e7J

http://twitter.com/pha/status/5226950218

というつぶやきが気になったので、試しに1.3をダウンロードして、とりあえず $username と $password のみ変更して、他はデフォルト設定のまま、

  • さくらのレンタルサーバ スタンダード
  • PHP 5.2.10*1

上でreply_random.php を試してみると……

  1. http://(fuga).sakura.ne.jp/(hoge)/reply_random.phpをブラウザから叩くと、正常に動作していそう。
  2. sshログインしてコマンドライン上で(~/www/(hoge)/以外のディレクトリから)、
    $ php ~/www/(hoge)/reply_random.php
    とかすると、
    <body>
    まで表示されたところで停まってしまう。
  3. $ cd ~/www/(hoge)/ ; php ./reply_random.php
    なら、正常動作する。

という状態でした。

対処方法*2

ということで、どうやら実行されるPATHが問題らしい、と思ったので、

<?php
require_once("Services/Twitter.php");

<?php
chdir(dirname(__FILE__)); // 追加
require_once("Services/Twitter.php");

としてやると、コマンドライン上・相対パス指定でも動作するようになりました。
PHPなんて触ったことないし正しい修正かどうかは解りません(苦笑)。

ついでに

cronの方も試しに

*/5 * * * * php ~/www/(hoge)/reply_random.php

で5分間隔で動かしておいて何回か @ 付きで bot 宛につぶやいてみたところ、動作していたようです。

ただ、さくらの場合

実行頻度が1時間以内に連続する場合や、CPU処理時間が60秒以上連続で利用される場合、予告なく設定解除される場合があります。

https://secure.sakura.ad.jp/rscontrol/rs/crontab

とあるので、現在は停止しており、あまり深くは追求していません。
5分に1回くらいなら許してほしいなぁ…。

*1:PHPは初めて使うので、設定等は何もいじっていないデフォルト状態

*2:プログラミングができない人もみんなTwitter Botを作ったらいいよ - phaの日記にもコメント済