Sau 2 ngày nghiên cứu vật vã cũng hiểu được tạm tạm nguyên lý thằng Facebook và google tại sao nó chạy nhanh như vậy...
Nó có hàng ngàn cổ sever đặt khắp các nước trên thế giớ và có 1 lượng lớn sever cố định 1 nơi để chạy resource còn lại chạy cache ở mỗi nước. Nếu ip nước nào truy cập vào nó sẽ lưu cache vào sever nước đó và khi đó nó chỉ việc lôi cái cache đó ra cho ngườ khác sử dụng. Đã nói như 1 bài ở trên. Ở đây sẽ hướng dẫn cách sử dụng memcached cho sever + vbb nhé.
. Mô hình truy vấn dữ liệu (data) từ CPU tới các loại bộ nhớ có dạng sau:
CPU <==>Cache Memory <==>RAM <==> HDD (ổ cứng)
Thứ tự ưu tiên hẳn các bạn đã biết, đầu tiên mọi dữ liệu mà CPU xử lý sẽ được đặt vào cache (bộ nhớ đệm với khả năng truy xuất cực nhanh). Nếu như CPU không thấy dữ liệu trong cache, nó mới lò dò tìm đến RAM, và khi trong RAM cũng không có nốt thì nó mới phải cầu viện đến cái ổ cứng chậm chạp!
Mô hình cache này được nhiều ứng dụng thương mại sử dụng nhằm làm tăng tốc độ xử lý chương trình bằng cách lưu lại các kết quả đã xử lý được vào một chỗ nào đó (gọi là cache). Sau này, mỗi khi xử lý các yêu cầu, chương trình sẽ kiểm tra xem dữ liệu liên quan tới yêu cầu đó đã được xử lý chưa, đã tồn tại trong cache chưa? Nếu có rồi thì chỉ việc đem ra xài. Còn trong trường hợp ngược lại (chưa có), chương trình mới hì hục truy vấn, xử lý dữ liệu... và tìm cách lưu các dữ liệu đã xử lý vào cache.
PHP cũng tồn tại một công cụ tương tự như vậy, đó là memcache. Đây là một công cụ khá hữu hiệu để giúp tăng tốc độ xử lý dữ liệu, cho phép Website có thể "chống đỡ" được rất nhiều lượt truy cập bằng cách xử lý các yêu cầu giống nhau và lưu sẵn các kết quả vào cache, khi cần chỉ việc lấy kết quả từ cache và chuyển luôn xuống cho người dùng, khỏi phải xử lý lại cho mắc công
.
Sơ lược về cache và quảng cáo về sức mạnh của memcache tạm dừng ở đây, bây giờ ta sẽ bắt tay vào mổ xẻ cái thứ đồ chơi này xem sao
Trước tiên, cũng như mọi lần, tôi cần một ấm trà hoặc một cốc cafe đã 
1 Preliminary Note
Với vbb thì nó thường mặc định đường dẫn là :/var/www/www.example.com/web/forums
quan trọng cần sử dụng là file config nhé. Nó sẽ nằm ở
/var/www/www.example.com/web/forums/includes.
memcached and the PHP5 memcache module are available as packages for Debian Etch, so we can install them as follows:apt-get install memcached php5-memcache
netstat -tap | grep memcached
tcp 0 0 *:11211 *:* LISTEN 3053/memcached
server1:~#
As you see, memcached is running on port 11211 (the default memcached port), and it's listening on all interfaces on the system. As memcached has no built-in authentication mechanisms (in order to not give up on speed), this means that anyone can connect to it from outside and use it. To avoid this, you can either close port 11211 in your firewall, or you configure memcached to listen on localhost only. I will use the latter method here.
To do this, open the memcached configuration which is stored in /etc/memcached.conf:vi /etc/memcached.conf
[...]
# Specify which IP address to listen on. The default is to listen on all IP addresses
# This parameter is one of the only security measures that memcached has, so make sure
# it's listening on a firewalled interface.
# -l 12.34.56.78
-l 127.0.0.1
[...]
/etc/init.d/memcached restart
netstat -tap | grep memcached
server1:~# netstat -tap | grep memcached
tcp 0 0 localhost.localdo:11211 *:* LISTEN 3092/memcached
server1:~#
Then open /etc/php5/apache2/php.ini...vi /etc/php5/apache2/php.ini
[...]
extension=memcache.so
[memcache]
memcache.dbpath=/var/lib/memcache
memcache.maxreclevel=0
memcache.maxfiles=0
memcache.archivememlim=0
memcache.maxfilesize=0
memcache.maxratio=0
/etc/init.d/apache2 restart
3 Configure vBulletin
Next open vBulletin's config.php file:cd /var/www/www.example.com/web/forums/includes/
vi config.php
[...]
/*
$config['Datastore']['class'] = 'vB_Datastore_Memcached';
$i = 0;
// server thứ nhất
$i++;
$config['Misc']['memcacheserver'][$i] = '127.0.0.1';
$config['Misc']['memcacheport'][$i] = 11211;
$config['Misc']['memcachepersistent'][$i] = true;
$config['Misc']['memcacheweight'][$i] = 1;
$config['Misc']['memcachetimeout'][$i] = 1;
$config['Misc']['memcacheretry_interval'][$i] = 15;
*/
[...]
[...]
$config['Datastore']['class'] = 'vB_Datastore_Memcached';
$i = 0;
// sever thứ 2 ... và thứ n đều như vậy.
$i++;
$config['Misc']['memcacheserver'][$i] = '127.0.0.1';
$config['Misc']['memcacheport'][$i] = 11211;
$config['Misc']['memcachepersistent'][$i] = true;
$config['Misc']['memcacheweight'][$i] = 1;
$config['Misc']['memcachetimeout'][$i] = 1;
$config['Misc']['memcacheretry_interval'][$i] = 15;
[...]
That's it. Your vBulletin is now using memcached!
4 Links website đã dùng và tham khảo cho bài viết này
Phần cài đặt phải để tiếng anh nhá. Vì setup bằng lệnh trong linux dịch ra thì nó lủng củng lắm. Chúc mọi ngườ thành công nhé.
Share đoạn code để test xem memcached đã hoạt động tốt chưa nhé. <?
$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("Could not connect");
echo "Server's version: {$memcache->getVersion()}
";
$tmp = new stdClass;
$tmp->string_attribute = 'testing';
$tmp->string_attribute = 123;
$memcache->set('key', $tmp, false, 10) or die ("Failed to save temporary object at memcache server");
echo "Data from the cache:
\n";
print_r($memcache->get('key'));
?>Sưu tầm
- 10 thủ thuật quảng bá Web giúp bạn tạo tiêu đề bài viết hấp dẫn người đọc và máy tìm kiếm.
- Thư viện cache.php - Cache website
- Plugin jquery lazyload - load từng ảnh trên trang web
- Hướng dẫn sử dụng Robots META Tag - Metadata Elements
- 10 Tips for DIY SEO Copywriting
- Alexa rank lower
- Bộ 10 công cụ SEO miễn phí từ Google
- Google xếp hạng cao thương hiệu trong kết quả tìm kiếm




