再度まとめてみました。ここの記事よりはわかりやすいかもしれません

Google App Engine(GAE)でcron動かすやり方をゆとり向けにまとめてみた
http://ko-lab.net/twitter/google-app-enginegaeでcron動かすやり方をゆとり向けにまとめてみ/

私のBOTは基本、さくらのレンタルサーバ上のCronで動いていますが、来るべきニートの日のために無料でなんとか動かす方法を探す旅に出ていました。

一応cron-job.orgはあるけれども、不安定すぎて何とも言えない状況です。

http://www.cron-job.org/

そして、いろいろググってみたところ、Google App EngineでCronが使えるじゃありませんか!

というわけで弄ったら作れましたので方法をわりと大雑把に公開しておきます。

※注意:動かなくても文句は言わない、PCがぶっ壊れてもことぶきあきらは責任を負いません





※「GAE課金される!何それ怖い!」という方向け

・GAEは一定以上のリソース食いつくすと課金しなければ動かせない

・食いつくした後はあとで請求というヤクザ課金ではなくて、こちら側が課金のアクションを起こさない限り動かせなくなるだけです。

・けれど、そこまでひどいスクリプト書いていなければ無料の範囲内でおさまります

・echoやprint、var_dumpやprint_rで出力する部分を削ればなんとかなります。

・1分だと早すぎるので2分5分くらいが丁度いいのではないでしょうか



・軽いかどうかはわかりませんし、動くかどうかもわかりませんが、oAuth使えるPHPスクリプト公開してるんで使ってみたい人は使ってみてくださいね

http://ko-lab.net/雑記/phpで簡単に?oauthでtwitterapiにアクセスしてbotなど作れる関/


0.下準備

http://code.google.com/intl/ja/appengine/

ここのスタートガイドの欄の「登録」して、

http://codezine.jp/article/detail/3835

ここに従って環境を導入してください。

eclipseのダウンロードは

http://mergedoc.sourceforge.jp/

ここから

1.プロジェクト作成

下準備のhttp://codezine.jp/article/detail/3835このページのプロジェクト作成まで進んでください。

プロジェクトの作成例は以下のような感じです。

プロジェクト作成例

以下、testcronとして進めます。

2.コードを書く

testcronServlet.javaを開いてコードを書きます。

面倒だと思うので以下コピペで。
URL url = new URL("http://your.bot.url/");

は、自分のBOTのURLに書き換えてください。
package testcron;

import java.net.MalformedURLException;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import javax.servlet.http.*;

@SuppressWarnings("serial")
public class testcronServlet extends HttpServlet {
	public void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws IOException {
		resp.setContentType("text/plain");

		        try {
		            URL url = new URL("http://your.bot.url/");
		            BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
		            String line;

		            while ((line = reader.readLine()) != null) {
		            	resp.getWriter().println(line);
		            }
		            reader.close();

		        } catch (MalformedURLException e) {
		        	resp.getWriter().println("URL faild : " + e);
		        } catch (IOException e) {
		        	resp.getWriter().println("URL faild : " + e);
		        }

	}
}

3.cronの設定

testcron – war – WEB-INF

を右クリックして

新規→ファイル

をクリックしたのち、cron.xmlを作成してください。

編集する際はcron.xmlを右クリックして

アプリケーションから開く→テキスト・エディター

で開いてください。

で、以下コピペです。

testcronとかは適宜書き変えてください

<url>/crontest</url>

の / (スラッシュ)は忘れずに付けてください

<cronentries>
<cronentries> <cron> <url>/crontest</url> <description>crontest the run every 2 minutes</description> <schedule>every 2 minutes</schedule> <timezone>Asia/Tokyo</timezone> </cron> </cronentries>

この例では2分ですが、


<schedule>every 2 minutes</schedule>

の数字を変えれば3分単位でも10分単位でも動きます。
最低は1分です。他にも設定書式はありますがそれはググってください。

4.デプロイの準備

デプロイっていうのは要はアップロードして使えるようにすることです。

デバッグなんかはどうでもいいので

http://codezine.jp/article/detail/3835?p=4

ここを読んで領域を確保してください。

例として挙げたtestcronだとたぶんダメなので

yukarinloveとかonakasuikaとか適当な名前を付けてください

5.デプロイ

http://codezine.jp/article/detail/3835?p=5
ここを見て実行してください。

6.動くのを確認する

他のサービスでCronを設定してる場合は切って、設定した時間待ちましょう。
とりあえずWeb上で動いてるのだけ確認したい場合は

http://設定したApplication id.appspot.com/testcron

で動くはずです。

7.最後に

お疲れ様でした。
とりあえず個別にApp idを生成しても5つ?までcronで動かせるようになります。
さらに、プログラミングの知識があれば、1つのApp idで複数のBOTを動かすことができるでしょう。

8.気になること

そもそも今GAEに登録できるかわからない
たぶんこの使い方はBANされるかもしれない

WordPressでXMLコードがうまく表示してくれない