他のサーバーのcron

Piwikはフリーの高性能なアクセス解析です。日本語にも対応しています。
Google アナリティクスと違い、リアルタイムで解析することも出来ます。

Piwikの自動リポート処理はブラウザで管理画面にアクセスしたことをトリガーに行われますが、アクセスの多いサイトを解析している場合、待ちが出来ます。

予めデーター処理をして置くことで利便性が増します。
これには一時間ごとにそれまでのデーターをcronをトリガーにして行わせることが必要です。

この備考録です。

さて、私のPiwikを設置しているサーバーはcronが使えません。これをさくらインターネットのサーバーのcronで動かします。

そこで、URLをフェッチすることでcronを働かせることにしました。つまりURLを実行することによってcronの代替をします。

 

http://あなたのドメイン/piwik/misc/cron/archive.php?token_auth=***

仮にあるドメインの下のPiwikというフォルダにPiwikを設置しているとしますと、このようなURLになります。

最後の***は、あなたのAPIコードです。ユーザーの画面のAPIをご覧下さい。32桁の英数字です。

さて、こちらをクリックすればトリガーになりますが、自分でクリックして作動を確認します。
エラーにならずにかなりの時間後、処理が完了したことを示すメッセージがあれば成功です。

これを自動処理する必要があります。これにcronを使います。

<?php
readfile("http://あなたのドメイン/piwik/misc/cron/archive.php?token_auth=***");
?>

このような簡単な構文のPHPファイルを作ります。cron.phpでも良いですし、なにか適当な名前で保存します。

さくらの任意の場所に置きます。属性を実行権限を与えておきます。755で良いです。
さくらのあなたのwwwのトップのフォルダに置いたとして、cron設定の構文はこうなります。

cd /home/***/www/; /usr/local/bin/php -f /home/***/www/melchan.php >/dev/null

/dev/nullはメッセージは全部棄ててしまえと言うことです。***はあなたのユーザー名、つまりフォルダです。

時間は1時間に1回動かせばよろしいでしょう。0 * * * * で、毎時0分に起動させます。

 

cronに設定する場合

後日記載。

ちなみにGMOクラウドのVPSのcronに設定する場合。結局こちらに設置しました。

/usr/local/psa/admin/bin/php -f /var/www/vhosts/***.com/httpdocs/piwik/console core:archive --url=http://***.com/piwik/ > /dev/null

/usr/local/psa/admin/bin/phpは、PHPの場所です。他のサーバーなら、/usr/local/bin/phpが多いと思います。

***はあなたのドメイン。

/var/www/vhosts/***.com/httpdocsとかは、サーバー上の位置です。さくらなら/home/~ですね。

バリューサーバーの場合は、シェルスクリプトで書いた実行ファイルをcronで指定する形になります。

 

#!/bin/sh
/usr/local/bin/php -f /virtual/*******/public_html/****.com/piwik/console core:archive --url=http://****.com/piwik/ > /virtual/*******/public_html/piwik-archive-output.log

これを***.shという、ファイルで保存して、そのファイルを指定して実行します。改行コードは必ず「LF」、文字コードは、UTF-8にします。