ロリポップサーバーでCRONを使ってみよう

2010年4月からロリポップでCRONが使えるようになりました。 CRON(クローン)とはサーバー上にあるphpやPerlなどのスクリプトを一定時間おきに実行してくれるシステムです。 ロリポップでは全プランでこのCRONが使えます。ただし、プランによって実行できるプログラムの数と実行間隔に 制限があります。

プラン毎の制限

コロリポは1個のみ最短5分間隔、ロリポは5個、同じく5分間隔、チカッパプランは10個最短1分間隔で実行できます。 CRONを使えば色々な事ができます。例えば、CMSの予約投稿、Twitterの自動ツイート、メールの自動送信、 RSSの自動取得→ブログへの書込みなどなど、それ以外にもphpで作ったスクリプトを実行できます。 ただし、実行に30秒以上かかるような重いプログラムなどは禁止されています。 重いプログラムを実行する場合はいくつかに分割して実行するといいと思います。 その場合コロリポプランは1個しか使えないので、ロリポプランかチカッパプランにしましょう。 また、ロリポップには実行結果をメールで知らせてくれる機能もあります。メールマガジンなどで使う方は メールマガジン送信時に自分のアドレスへメールを受け取る様に設定もできます。 禁止されているスクリプトや高負荷のスクリプトを使っているとロリポップから警告のメールがきます。 それから数日以内に改善しない場合はロックされちゃいます。

CRONでお金稼ぎ

アフィリエイトやドロップシッピングをやっている方はASPから供給される最新の商品のRSSに自分のIDをつけて 自動でブログに書込みたいと思っている方もいると思います。そんな時にこのCRON機能を使って自動で記事の更新ができます。 他にTwitterBOTを使ってアフィリエイトID付きのつぶやきを自動でする事もできます。 同じツイートは連続でできないので、その都度取得するようにしましょう。 自分で製作するのもいいですが、スクリプトの知識が無いと難しいのです。 EasyBotterなどのphpを自分で改造するのが一番手っ取り早いとおもいます。

CRONの設定方法

ここからは実際にロリポップでのCRONの使い方を説明していきます。FFFTPなどを使って任意のフォルダへ アップロードします。右クリックの属性変更でパーミッション700に変更します。 ここではsendmail.phpというスクリプトを作ってメルマガの配信がしたいと仮定して進めていきます。 FFFTPでCRON用のPHPをアップロード まず実行するphpにエラーがないか手動で実行してみます。 問題なくメールが届く事が確認できたらロリポップのHPにログインします。 そして左側のメニューのWEBツールからCRON設定を開きます。そして順番に入力していきます。 CRON実行時間などの入力 ※ロリポップではcrontabが使えません。 メールを自動で毎週水曜日のお昼に送りたい場合は下記のように設定します。 CRONでメール自動送信 設定名は自分で分かる名前ならなんでもいいです。ここでは「メルマガ配信」とします。 一週間に1回の場合は日付(月)を毎月と曜日を水曜日に設定します。時間はお昼なので12時、0分にします。 実行ファイルパスにphpをアップロードした場所を入力します。 これで毎週水曜日のお昼にメルマガが配信されます。 プランによって制限がありますので、下記を参考にして範囲内に設定してください。 ※10日間の無料期間中はメールの送信が1日50件に制限されます。 PHP5.3以降で実装された機能を使うにはシェルスクリプトを使ってPHPを呼び出さないといけません。 シェルスクリプトの使い方は下記の「MovableTypeの予約投稿を使う」で紹介しています。

Wordpressの予約投稿を使う

Wordpressには予約投稿機能がついていますが、これは予約時間を過ぎた後にアクセスがあると記事を公開するというシステムです。 なので、頻繁にアクセスのあるサイトなら、すぐに記事が公開されますが、あまりアクセスされないブログだとなかなか予約記事が公開されなくなってしまいます。 決まった時間にきちんと予約投稿を行うにはwp-cron.phpをロリポップのCRON設定に入れるだけでOKです。 WordpressのCRON設定 Wordpressをインストールしたディレクトリの下に指定してください。WPというフォルダにインストールした場合は ロリポップの実行ファイルパス欄にWP/wp-cron.phpと入力します。

MovableTypeの予約投稿を使う

MTの予約投稿モジュールのパーミッションを700に書き換えます。 予約投稿モジュールの位置は/tools/run-periodic-tasksです。 MovableTypeの場合、シェルスクリプトを作ります。 mt_test.shというファイルを作ったとします。
#!/bin/sh cd /home/users/2/ドメイン-自分のID/web/MTのディレクトリ/ /usr/bin/perl ./tools/run-periodic-tasks echo exit
赤字の部分を自分の環境に合わせて書き換えてください。txtに貼り付けて名前をmt_test.shに変更します。 文字コードはUTF-8Nで改行コードはLFで保存してください。 ロリポップにログインしてWEBツールからCRON設定を選びます。 WEBツールからCRON設定を選択 実行ファイルパスのところに作成したmt_test.shのパスを設定します。CRON設定名は自分で分かりやすい名前をつけてください。 あまり負荷がかからないように実行スケジュールは30分〜1時間おきにしましょう。 ロリポップのCRON設定画面 後はMovableTypeにログインして日時を指定して記事を書けばOKです。

動かない時の対処法

エラーが起きた場合、下記を確認してみてください。 ■ロリポップのphpは初期設定でphp5.2になっています。 スクリプトの先頭には「#!/usr/local/php5/bin/php」と記入してください。 phpを5.3や5.4に変更していた場合は「#!/usr/local/php53/bin/php」か「#!/usr/local/php54/bin/php」に変更してください。 ■シェルスクリプトの場合は「#!/bin/sh」です。シェルスクリプト内のuserPathがフルパスになっているか、 appPathがインストールしたディレクトリになっているかどうかも確認してください。 ■CRON実行時にFatal error: Call to undefined function mysql_query()と出る場合。 上記と同じでshファイルに記述するPHPコマンドをフルパスに変更する。 例:/usr/local/php5.3/bin/php test.php ■phpのcharsetはShift_JISになっていますか?ロリポップサーバーではShift_JISでないと動きません。 ■phpのソース内でファイルを指定する場合は絶対パスにします。 ■ロリポップでは処理に30秒以上かかるスクリプトは利用できません。