// 1.モデルを作成
$ php artisan make:model Analytic -m
// 2.migration file
public function up() { Schema::create('analytics', function (Blueprint $table) { $table->id(); $table->integer('sessions')->nullable(); $table->integer('pageviews')->nullable(); $table->timestamps(); }); }
$ php artisan migrate
mysql> describe analytics;
// 3.PDO部分を先に作ります
$date = new DateTime(); $date = $date->format('Y-m-d H:i:s'); $sessions = 100; $pageviews = 200; $username="*"; $password="*"; $dsn = 'mysql:host=localhost;dbname=test;charset=utf8'; try { $dbh = new PDO($dsn, $username, $password,array(PDO::ATTR_EMULATE_PREPARES => false,PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET `utf8`")); $sql = "INSERT INTO analytics( sessions, pageviews, created_at ) VALUES ( ".$sessions.", ".$pageviews.", '".$date."' )"; $res = $dbh->query($sql); } catch (PDOException $e) { exit('データベース接続失敗。'.$e->getMessage()); } $dbh = null;
mysql> select * from analytics;
+—-+———-+———–+———————+————+
| id | sessions | pageviews | created_at | updated_at |
+—-+———-+———–+———————+————+
| 1 | 100 | 200 | 2020-12-05 00:37:52 | NULL |
+—-+———-+———–+———————+————+
1 row in set (0.00 sec)
// 4. GoogleAnalyticsAPIを連結
L バッチで処理する際は、required_once と p12ファイルを絶対パスで指定する必要がある。
require_once '/home/vagrant/dev/test/google-api-php-client/src/Google/autoload.php'; $service_account_email = '*.iam.gserviceaccount.com'; $key = file_get_contents('/home/vagrant/dev/test/analytics-*.p12'); $profile = '*'; $client = new Google_Client(); $analytics = new Google_Service_Analytics($client); $cred = new Google_Auth_AssertionCredentials( $service_account_email, array(Google_Service_Analytics::ANALYTICS_READONLY), $key ); $client->setAssertionCredentials($cred); if($client->getAuth()->isAccessTokenExpired()){ $client->getAuth()->refreshTokenWithAssertion($cred); } $result = $analytics->data_ga->get( 'ga:' . $profile, 'yesterday', 'yesterday', 'ga:sessions,ga:pageviews', ); $sessions = $result -> rows[0][0]; $pageviews = $result -> rows[0][1];
mysql> select * from analytics;
$ sudo chmod 755 batch.php
// 5.Cronの設定
$ which php
/usr/bin/php
$ sudo vi /etc/crontab
*/1 * * * * /usr/bin/php /home/vagrant/dev/testApp/batch.php
mysql> select * from analytics;
$ sudo tail -f /var/log/cron でcronログ見るとエラーは出てないのに、mysqlにデータが入ってなくてなんでかと思ったが、required_once と p12ファイルを絶対パスで指定していなかったのが原因だったみたい。難儀なこっちゃ。