การแก้ไข ของผู้เข้าชม NewStatPress รวม ( Modified WordPress ปลั๊กอิน )

本サイトではWordPressのプラグイン「NewStatPress」を使用しサイトのアクセス解析を行うと同時にサイドバーのウィジェットに閲覧ページ数や訪問者数を表示しています

อย่างไรก็ตาม、このNewStatPressのプログラムを解析したところDBに蓄積したデータが増えるに従いウィジェットの表示が遅くなる事が分かりました
เด่นชัด、サイトのパフォーマンスを維持するためにはNewStatPressが使用するデータベースに溜まったデータを定期的にリフレッシュする必要があるようです

แต่、DBのデータをクリアするとNewStatPressが表示するカウンタもリセットされる仕様になっているためこの処理を容易に行う事が出来ません。 👉 この現象はバグであったように思われます(5月16日更新) Look at [ได้รับการแก้ไข] เข้าถึงหมายเลขโดยอัตโนมัติใหม่ทุกวัน (4 ลงรายการบัญชี)

ดังนั้น、やりたくは無かったのですが最終手段としてNewStatPressのプログラムを修正する事にしました
ネットを検索した限りではNewStatPressの最新バージョン(0.9.7)に対し日本でこの修正を行った人は未だ居ない模様です
修正箇所を見つけるのに少し時間が掛かりましたがやっと見つけました

本サイトは、1月15日から3月14日までに、7400人の訪問がありましたが翌日にDBのデータをクリアした事でカウンタが0になってしまいましたので訪問者総数に+7400を加えるようプログラムを修正しました

参考のため修正方法を以下に示します
มันควรจะตั้งข้อสังเกต、この処理で何らかの問題が生じても私は一切責任を負いません
ถ้า、あなたがこれを参考にプログラムを修正されるのならあくまでも自己責任でお願いします

以下に示すAjaxを制御するモジュールから呼ばれるAPI(variables.php)を修正します
中身は殆どSQLの集まりですが…

*และอาแจ็กซ์

 

このプログラムの「Line 71」を以下のように修正します(本サイトでは、+ 7400)

 

以下にプログラムの修正前と修正後のウィジェットの表示結果を示します

* 11 สิงหาคมวรรณกรรม
โดยบังเอิญ、私はNewStatPressのDBの肥大化を防ぐため集計期間を3ヶ月に設定し総合カウンタの集計についてはNewStatPressのカウンタ値を使用せずにPerlのプログラムの集計値を使用するようにしました
(front-page.php内からPerlのプログラム呼び出し)

การทดลองที่จะเรียก Perl ของโปรแกรมการวิเคราะห์การเข้าถึงจาก WordPress

これまでの実験でWordPressにおけるテーマのheader.phpより単純にperlのアクセス解析プログラム「perlstats.cgi(仮称)」を呼び出すとサーバーの環境変数が引き継がれない事が判明しています

ในเวลานี้、WordPressのindex.phpのプログラム内にperlのアクセス解析プログラムを呼び出す実験をしました
มันควรจะตั้งข้อสังเกต、普通に呼び出すとやはり環境変数が渡らないようなので、ล่วงหน้า、PHPのプログラム側から環境変数を取得しパラメーターで渡す方式でperlのプログラムも修正しました

index.phpのプログラムコードは、มันจะเป็นดังนี้。
(セキュリティ上実際のコードを少し修正しています)

 

perlstats.plの実行後の結果を表示する管理プログラムの画面を以下に示します

 

上の画面を見ると以下のサーバーの環境変数は引き渡されている事が分かります

REMOTE_HOST
REMOTE_ADDR
HTTP_USER_AGENT

แต่、อับ、リンク元URLの集計が’0’のままなのでHTTP_REFERERは送られていない模様です

ที่นั่น、そもそもHTTP_REFERERがPHPならびにperlで正しく設定されているのかどうかを確かめるため簡単な実験サイトを作って検証して見ました

まず使用可能な環境変数を表示するPHPのプログラム「server_key.php」です(以下)

 

次に使用可能な環境変数を表示するperlのプログラム「server_key.pl」です(以下)

 

และ、それらのプログラムを呼び出す側のHTMLコード「test_referer.html」です(以下)

 

上の二つのリンクのそれぞれの結果は、มันจะเป็นดังนี้。

PHP、perlともサーバー環境変数の取得はちゃんと出来ている事がこれで分かりました
WordPress上でなければ問題なく動くようです

 

問題は三番目のリンク(index.php)です
หลังจากที่ทุก、HTTP_REFERERは取得できていませんでした

ที่นั่น、index.phpへのコードの挿入位置に問題があるのかもしれないという事で以下のように変更して見ました

 

その結果は見事に失敗でした。 (>_<)

PHPの同一スコープ内に置いても同じ結果でした
NewStatPressなどWordPressのプラグインでHTTP_REFERERの情報が非同期にリセットされているような気がするのですが詳しい原因は私には良く分かりません
もしかしたらプラグイン「WP Super Cache」によるキャッシュが原因かもしれません

この件で解る方誰かエロイ先生教えて下さい!!(หัวเราะ)

โดยที่ ...

WordPressからperlプログラムへHTTP_REFERERを渡すのは難しいのでperlのアクセス解析プログラム「perlstats.cgi」において「リンク元URLの集計」の部分はできないという事で諦めます。 บาร์เลย์