0064 | แก้ปัญหา IP ใน log apache ไม่ตรง
Friday, June 19th, 2009 Posted in Linux, Web Server | 7 Comments »ที่มา: การติดตั้ง mod_rpaf – reverse proxy add forward
รายละเอียดตามไปดูในที่มาละกันเนาะ ขี้เกียจพิมพ์ซ้ำ
เอาวิธีก๊อปวางบ้านๆ ของเราดีกว่า
wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz tar -xvzf mod_rpaf-0.6.tar.gz cd mod_rpaf-0.6 apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c |
เปิดไฟล์ config apache (แนะนำให้ใส่ใน /etc/httpd/conf.d/mod_rpaf.conf)
แก้ตัวแดงๆ ให้ตรงกับเครื่องคุณเองด้วยนะครับ
– อันบนเอาบรรทัดสุดท้ายจากคำสั่ง apxs มา
– อันล่างเอาเป็น ip ของเครื่อง squid
LoadModule rpaf_module /usr/lib64/httpd/modules/mod_rpaf-2.0.so RPAFenable On RPAFsethostname Off RPAFproxy_ips 127.0.0.1 RPAFheader X-Forwarded-For
ถ้าใช้ตัวนี้ ก็เอา ipfix.php ออกไปได้เลยครับ
บทความที่เกี่ยวข้อง
– 0052 | squid 2.6 as reverse transparent proxy
– 0053 | ของแถม reverse proxy ipfix.php
0061 | PHP simple object cache
Tuesday, June 2nd, 2009 Posted in Database, PHP Coding, Programming, Web Server | 3 Comments »ระบบ cache มาอีกแล้ว เอ๊อกๆ
คราวนี้เป็น object cache ครับ ไม่ใช่ cache ทั้งหน้าแบบคราวก่อน
<?php $_cachetime = 3600; $_cacheroot = '/path/to/cache/'; function cacheget($key) { global $_cachetime, $_cacheroot; $_cachename = sprintf('%x', crc32($key)); $_cachefolder = $_cacheroot.substr($_cachename,0,2).'/'; $_cachefile = $_cachefolder.$_cachename; if (file_exists($_cachefile) && (filemtime($_cachefile) > time() - $_cachetime || (file_exists($_cachefile.'.lock') && time() - filemtime($_cachefile.'.lock') < 120))) { return unserialize(file_get_contents($_cachefile)); } return false; } function cachelock($key) { global $_cacheroot; $_cachename = sprintf("%x", crc32($key)); $_cachefolder = $_cacheroot.substr($_cachename,0,2).'/'; $_cachefile = $_cachefolder.$_cachename; umask(0); if (!file_exists($_cachefolder)) { mkdir($_cachefolder,0777); } touch($_cachefile.'.lock'); } function cacheset($key, $value) { global $_cacheroot; $_cachename = sprintf('%x', crc32($key)); $_cachefolder = $_cacheroot.substr($_cachename,0,2).'/'; $_cachefile = $_cachefolder.$_cachename; umask(0); if (!file_exists($_cachefolder)) { mkdir($_cachefolder,0777); } if ($_h = fopen($_cachefile, 'w')) { fwrite($_h, serialize($value)); fclose($_h); unlink($_cachefile.'.lock'); } } ?> |
วิธีติดตั้ง:
include ไฟล์ไปบนสุดเลย แก้ตัวแปร $_cacheroot กับ $_cachetime ด้วยนะครับ
chmod 777 folder ตามที่ตั้งใน $_cacheroot ไว้ด้วย
วิธีเรียกใช้:
สมมติว่า cache คำสั่ง sql นะครับ
ถ้าปกติใช้อย่างนี้
<?php $query = 'SELECT * FROM table'; $sql = mysql_query($query); while ($row = mysql_fetch_assoc($sql)) { var_dump($row); } ?> |
ก็แก้เป็นประมาณนี้
<?php $query = 'SELECT * FROM table'; if (!$rows = cacheget($query)) { cachelock($query); $sql = mysql_query($query); $rows = array(); while ($row = mysql_fetch_assoc($sql)) $rows[] = $row; cacheset($query, $rows); } foreach($rows as $row) { var_dump($row); } ?> |