laravel+Keen.io+herokuで簡易解析

とあるシステムで簡単なアクセス解析をする必要があったため、 せっかくなので存在だけは知っていたKeen.ioを使ってみた。 Keen.io Keen.io は簡単にいうと解析サービス。 Googleアナリティクスとかmixpanelとかに近いっちゃー近いけど、 Keen.ioは基本的に 自分で 解析したい情報をJSONで投げる。 上述アクセスログに関しては、herokuのpostgreSQLなんかにぶっこんでるともったいない。 そんな時はログ基盤としてKeen.ioを使いましょ、って話。 とりあえずJSONでぶん投げておけば、「後で◯◯のデータを解析したい!」なんていう時にも役に立つ。 グラフの出力もしてくれるし。 そんなわけでHeroku + LaravelでのKeen.ioの使い方。 Heroku HerokuのアドオンからKeen.ioをインストール。 Developerプランは月50,000回のイベント送信まで無料。 ホント助かりまっせ!送信回数が増えたらぜひ有料プランを! コンソールからインストール $ heroku addons:create keen:developer Herokuの管理画面から、Setting > Config Variables > Edit のような感じで環境設定値が入る。 Laravel .envファイルの編集 上記の環境設定は、.envファイルに同じように記述する。 .env KEEN_API_URL=#### KEEN_MASTER_KEY=#### . . . composerパッケージに追加 ありがたいことにLaravelからKeen.ioを利用が可能なcomposerパッケージを作ってくれている人がいる。 せっかくなので利用させていただきましょう。 https://github.com/garethtdavies/keen-io-laravel $ composer require wensleydale/keen-io-laravel:1.* $ composer update 更新が終了したら、パッケージ追加完了。 サービスプロバイダーとエイリアスの追加 config/app.php を開き、 'providers' => array( ... Wensleydale\KeenLaravel\KeenLaravelServiceProvider::class ) 'aliases' => array( ... 'Keen' => Wensleydale\KeenLaravel\KeenFacade::class, ) を追加したのち $ php artisan vendor:publish を実行すると、同じくconfigディレクトリ内にkeen.phpというファイルがジェネレイトされる。 keen.php keen.phpには先ほど.envファイルに記述した設定値を記述。 keen.php <?php return array( ... »

laravel5.1でschedule + メール送信 + Heroku

Schedule Laravel5.1ではスケジューラによるcron処理が可能。 利用方法は以下。 Laravel側の設定 Console/Kernel.php 内 protected function schedule(Schedule $schedule) { $schedule->command('inspire') ->hourly(); $schedule->command('user:change-password 5365576') ->everyFiveMinutes(); } こんな感じでコマンドを登録しておく。 関数群は以下↓ http://readouble.com/laravel/5/1/ja/scheduling.html crontabの設定 $ crontab -e 以下のコマンドをファイルに記述 * * * * * php /path/to/artisan schedule:run 1>> /dev/null 2>&1 要は「毎秒cron走らせて、phpの関数で実行時間を管理」するということらしい。 メール Laravel内部では、SwiftMailer というPHPライブラリを利用している。 デフォルトでサポートされているドライバーは、 smtp mail sendmail mailgun mandrill ses(amazon simple email service) log というラインナップ。「log」は 開発環境で送信結果のみをログ・ファイルに出力 など開発環境向き。 とりわけメールのテストは面倒くさいのでこういった気遣いはありがたい。 が、せっかくなので、テストはLaravel推奨のmailtrap.io を利用する。 productionではherokuを利用することを想定し、無料枠のあるmailgun(400/day)を使う。 開発環境 とりま guzzleをcomposerに。 "require": { "guzzlehttp/guzzle": "~5.3|~6.0" } で、$ composer update https://mailtrap.io/ →「Sing up」から、アカウントを作成。 OAuthでサクッとやっちまうのがラク。 ログインページに遷移したら、「Demo inbox」をクリック モザイクかかってるUsernameとPasswordを.env にいれればおk. MAIL_DRIVER=smtp MAIL_HOST=mailtrap.io MAIL_PORT=2525 MAIL_USERNAME=[mailtrap_smtp_username] MAIL_PASSWORD=[mailtrap_smtp_password] MAIL_ENCRYPTION=null 上記を設定した状態で、http://readouble.com/laravel/5/1/ja/mail.html の「メール送信」項目を参考にコードを書けばまあ動くだろう。 mailgunの設定 さてお次はmailgunの設定。 $ heroku addons:create mailgun:starter -a APP_NAME でmailgunの無料プランを追加。 次に、config/services.php 以下のmailgunにdomainとsecretを記入。 若干わかりづらかったが、 ・ドメイン ・secret である。(モザイクだらけ) あとは、mail.php をちょちょいと修正(ユーザー名とかパスワードとか)を入れればおk. »