teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

加筆修正

2021/01/18 02:47

投稿

退会済みユーザー
answer CHANGED
@@ -1,2 +1,19 @@
1
1
  生のアクセスログはチェックしていないのでしょうか?
2
- 正確性の怪しいカウンター処理なんかよりも当てになると思うのですが。
2
+ 正確性の怪しいカウンター処理なんかよりも当てになると思うのですが。
3
+
4
+
5
+ ---
6
+
7
+ 排他ロックの件、言及しておくと、
8
+ `if (flock($fp, LOCK_EX)) {`
9
+ に対するelseが存在しないので、排他ロックの取得に失敗したときに何もしないことになってる。
10
+ (アクセス殺到するなどして)排他ロックが取れないとき、
11
+ 数ミリ秒待って再度取得を試みるようにwhile()ループにするのも手ですが、
12
+ 何度やっても取得できない場合に無限ループにならないよう、
13
+ 例えば10回試してダメだったら諦めるとかやらないといけないはず。
14
+
15
+ それでも、何かの折にファイル破損してしまうかもしれないので、
16
+ 本気でカウントしたければデータベースに記録するのがいいかも。
17
+
18
+ まぁ、そこまでの本気度ではなさそうだし、
19
+ せいぜい、特定のアクセス元はカウントせずスルーするようなアルゴリズムを加えるべきでしょうね。