register_globals in drupal

เมื่อติดตั้ง drupal แล้วเจอปัญหาว่า

Requirements problem
The following error must be resolved before you can continue the installation process:
register_globals is enabled. Drupal requires this configuration directive to be disabled. Your site may not be secure when register_globals is enabled. The PHP manual has instructions for how to change configuration settings. (Currently using PHP register globals Enabled (‘1’))

แก้ได้ด้วยตัวเองโดยไม่ต้องบอกให้ system admin แก้ไขระบบ ด้วยการ

สร้าง php.ini ไว้ที่ root document โดยมีข้อมูลข้างใน คือ

 
[PHP]
register_globals = Off

ref :
http://drupal.org/node/216882

memcache memcached

แค่มีตัว d เพิ่มเข้ามา ชีวิตก็เปลี่ยนครับ

ปกติแล้วการสร้าว session ใน php จะสร้างเป็น files เอาไว้ใน /tmp โดยจะมีชื่อเป็น sess
โดยจะมีค่าคอนฟิกอยู่ใน php.ini

แบบปกติ (default)

session.save_handler = files
;session.save_path = “/tmp”

แบบใช้ memcache

session.save_handler = memcache
session.save_path = “tcp://127.0.0.1:11211”

แบบใช้ memcached

session.save_handler = memcached
session.save_path = “127.0.0.1:21201”

ปล. port ของ memcache , memcached อาจไม่เหมือนตัวอย่าง โปรดแก้ไขให้ตรงกับคอนฟิกของตัวเอง
และอย่าลืม restart memcache หรือ restart memcahed ทุกครั้งหลังเปลี่ยนแปลงค่าใน php.ini

yii with memcached

yii มีระบบ cache อยู่หลายส่วนพอสมควรครับ ซึ่งเราจะกล่าวกันในครั้งต่อไป

รอบนี้เราจะมาพูดถึงเรื่อง memcached ละกัน
คงไม่ต้องเกรื่นใช่ไหมครับ ว่า memcached คืออะไร ???

ลองดูตาม blog ของคุณ @FordAntiTrust ได้ครับ เขียนอ่านง่าย เข้าใจไว 😀

http://www.thaicyberpoint.com/ford/blog/id/909/

ตอนแรกสุดผมใช้ Alternative PHP Cache หรือชื่อเล่นว่า APC ครับ เนื่องจาก config ง่าย และทาง yii ก็แนะนำไว้ ตามหน้า นี้

http://www.yiiframework.com/performance/

มันก็ทำงานได้ดีครับ ตามที่มันควรจะเป็น

'components'=>array(
  'cache'=>array(
    'class'=>'CApcCache',
  ),
),

แต่เนื่องจากความต้องการของมนุษย์มีไม่สิ้นสุดครับ…
ผมถึงต้องเปลี่ยนเป็น memcached

เพราะ APC ไม่ได้ถูกออกแบบมาสำหรับรองรับ server หลายๆตัวครับ
เพราะ memcached ออกแบบมาให้เป็น centralized cache ครับ

memcached

มาเริ่มกันเลยครับ
เริ่มจากติดตั้งก่อนเลยครับ ซึ่งถ้าลอง search memcached ดูจะเจอความงงงวยครั้งแรกครับ ..

p memcached - A high-performance memory object caching system
p memcachedb - Persistent storage engine using the memcache protocol
p php5-memcached - memcached module for php5

memcache กับ memcached
ใช้อันไหน !?!?!?!?!?!?!!

ใน linux นะครับ ถ้าเห็นอะไรแบบนี้ให้เดาไว้ก่อนเลยครับว่า d ที่ต่อท้ายมา คือ daemon
ดังนั้นเราต้องติดตั้ง memcachedb กับ php5-memcached ครับ

หลังจากที่ติดตั้งเสร็จแล้ว ก็มาลองใช้กันครับ..
โดยการเปิด config ของ memcached มาดูเล่นก่อนครับ

/etc/memcachedb.conf

บรรทัดที่น่าสนใจคือ

# Default connection port is 11211
-p 21201

ครับ… มันเปลี่ยน port เฉยเลย ถ้าไม่เข้ามาดูก่อน จะรู้ไหมเนี่ย!!!
เนื่องจากถ้าเข้าไปดูวิธีการ config ตัว memcached ให้เข้ากับ yii ตามหน้านี้

http://www.yiiframework.com/doc/api/1.1/CMemCache

จะบอกว่า

'port'=>11211,

ซึ่งมันไม่ถูกครับ ต้องใช้เป็น 21201

        'cache' => array(
                'class'=>'CMemCache',
                'servers'=>array(
                        array(
                        'host'=>'127.0.0.1',
                        'port'=>21201,
                        'weight'=>100,
                        ),
                ),
        ),

ก็จะใช้งานได้ละครับ…. ซะที่ไหนหละ ถ้าทำแค่นี้ จะเจอ erorr 500 แน่นอนครับ
เพราะ ผมโดนมาแล้ว

เราต้องไปแก้อีกที่ครับ

framework/caching/CMemCache.php

เปลี่ยนจาก

public $useMemcached=false;

เป็น

public $useMemcached=true;

คราวนี้ใช้งานได้จริงๆละครับ 😉