最近在做流量統計處理方式時,遇到一個問題。因為我們採用分析web server(apache)access log方式,有些額外的資訊,apache可能無法產生,而是需要在程式運作時得到這些資訊(資料可能來自於資料庫、cookie等來源),並寫入access log內。 舉例來說,下面這apache log,最後有個『mytestdata』。其實是要餵給之後流量統計分析之用的資訊。先假設該資料來自於cookie,該cookie的名稱為『cookieid』 192.168.174.1 - - [06/May/2011:22:41:11 +0800] "GET /test3.php HTTP/1.1" 200 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1" mytestdata 查閱了相關資料後,作法約有下面兩種方式… 第一個方式,修改apache log格式。在httpd.conf中修改LogFormat,增加如下的設定即可 %{cookieid}C 另一個方式,利用 apache_note() 來處理(在 PHP CookBook 看到的),處理方式分為兩段 修改apache log格式。在httpd.conf中修改LogFormat,增加 %{record_data}n 在php使用 apache_note() ,將資料寫入apache log。php程式語法如下… <?php apache_note( 'record_data' ,$_COOKIE[ 'cookieid' ]); 採用此法,可以在程式運作時取得所需的資訊,不限於cookie。比第一個方式有彈性。如下例 <?php $myvar= 'my testdata' ; //假設資料來自於資料庫 apache_note( 'record_data' , $myvar); 附註: 在測試時,發現一個狀況。在程式中,如果我呼叫兩次apache_note(),access log中就會有兩筆紀錄 apache_note() 有更進階的應用,不妨...