データベースのアクセスを大幅に増やさずにカウントしたいということですね。
すぐに思いつく方法としては、セッションの保存などに使われることが多いデータストアに一時保管しておいてから、ある程度まとめてデータベースに書き込むとかが、考えられますね。
まずは、PHP から memcached か Redis を利用できるようにする。
memcached
http://php.net/manual/ja/book.memcache.php
https://memcached.org/
Redis
http://redis.io/
https://github.com/phpredis/phpredis/
つぎに CakePHP の Config/core.php に 次のような Cache 設定を行う。
http://book.cakephp.org/3.0/en/core-libraries/caching.html
php
1// Redis の場合
2Cache::config('default', [
3 'engine' => 'Redis',
4 'server' => '127.0.0.1',
5 'port' => 6379,
6]);
7
8// Memcached の場合
9Cache::config('default', [
10 'engine' => 'Memcache',
11 'servers' => '127.0.0.1',
12 'port' => 11211,
13]);
どちらを使っても 次のような感じで、アクセスできます。
// 読み込み
Cache::read(‘key_name’)
// 書き出し
$data = [ 'key1' => 'data1' ];
Cache::write(‘key_name’, $data)
また、CakePHPのキャッシュエンジンにはカウンタAPIがありますので、下記のような使い方もできます。
// 初期データ書き込み
Cache::write('view_count', 0);
// 加算
Cache::increment('view_count');
// 減算
Cache::decrement('view_count');
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/04/21 03:23