Best way to implement counters for highly concurrent websites: PHP7 and JSON (Japanese Edition)

Amazon.co.uk Price: £2.32 (as of 22/04/2019 11:51 PST- Details)

Description

意外と難しいアクセスカウンター制作

<普通の解説書の通りに作るとダメ?>

アクセスカウンター、あなたはPHPで作る場合どう作りますか?
fgetやfputsを使う、fwriteを使う、あるいはシンプルに
file_get_contentsとfile_put_contentsにLOCK_EXフラグを付けて作る・・・
などの作り方が存在しますね。
多くの入門書やサイト(海外サイトや海外書籍も含めて)ではこのやり方が
紹介されています。

しかし、このやり方は間違っています!
厳密には間違っているというよりも必要なプロセスが抜け落ちているせいで、一見うまく動いているように見えていても、巨大掲示板などにあちこちにリンクが貼られわずか10秒間に数千人が同時にアクセスするような事態になった場合、そのアクセスカウンターは確実に飛びます!
アクセスカウンターが飛ぶとどうなるか、それまで何千何万とカウントしてきた
アクセスカウンターはまた0にリセット(0クリアとも呼ばれます)されてしまいます。

あるいは、飛ばない事を売り文句にしているスクリプトも存在しますが、誰かと同時アクセスになった場合、誰かの読み込みが完了するまでこちらが表示できない・・・みたいな非現実的な構造になっていたりするものが少なくありません。

このようにPHPでのテキストデータの同時書き込みへの対処法は実はプロの世界ですら実にいい加減です。同時アクセスの対処法が分からないのでアクセスカウンターのような小規模なものにわざわざMariaDBやMySQLやPostgreSQLやSQLiteを使う・・・というプロまで実際にいるくらいです。

(実例として、社名は伏せますが日本最大手の○ウィキというWikiページが作れるサイトが提供するアクセスカウンター機能も2015年までは同時アクセスが集中すると飛ぶ仕様だったりしました・・)

本書では以下の2つのことのみを解説しています。

・PHPでの正しいアクセスカウンターの作り方
・JSONを活用した大規模同時アクセスに対応したテキストデータの気軽な運用法

本書で取り扱う話題は極めて地味ですが、MySQLにわざわざ保存させるほどではないような小さなデータの集合をサーバーに有効的に保存・活用できるようになります。NoSQLなテキストデータ活用法により、これまで作れなかったより大きな規模、沢山のユーザー数を想定したサービスの開発に役立てられるでしょう。

Additional information

Author

Binding

Edition

Format

Languages

NumberOfPages

ProductGroup

ProductTypeName

PublicationDate

ReleaseDate

Reviews

There are no reviews yet.

Be the first to review “Best way to implement counters for highly concurrent websites: PHP7 and JSON (Japanese Edition)”

Your email address will not be published. Required fields are marked *