Đối tác

Online

  Số người đang online : 144

free counters Free WebSites Counters
        
( Nguồn - 2011-06-08 17:38:30 )

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é.



Nếu các bạn đã học qua về kiến trúc máy tính, hẳn các bạn cũng biết đến một thứ bộ nhớ cực kỳ mạnh mẽ, rất được CPU trọng dụng, đó là bộ nhớ cache . 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 đã 



bài này tham khảo php.vn



Cài đặt Memcache thôi nào(sever linux nhé )



1 Preliminary Note 



Với vbb thì nó thường mặc định đường dẫn là :



Code:
/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.
2 Installing memcached And The PHP5 memcache Module 



memcached and the PHP5 memcache module are available as packages for Debian Etch, so we can install them as follows:


Code:
apt-get install memcached php5-memcache
After the installation, memcached should already be running. You can check that by typing


Code:
netstat -tap | grep memcached
server1:~# 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:


Code:
vi /etc/memcached.conf
Add -l 127.0.0.1 to the configuration (you can also adjust the other settings if you like - the file contains explanations for each setting):


Code:
[...]
# 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
[...]
Restart memcached...


Code:
/etc/init.d/memcached restart
... and run 


Code:
netstat -tap | grep memcached
again. As you see, memcached is now listening on localhost only: 


server1:~# netstat -tap | grep memcached


tcp 0 0 localhost.localdo:11211 *:* LISTEN 3092/memcached


server1:~#


Then open /etc/php5/apache2/php.ini...


Code:
vi /etc/php5/apache2/php.ini
... and make sure that you have something like this in it (probably at the end): 



Code:
[...]
extension=memcache.so
[memcache]
memcache.dbpath=/var/lib/memcache
memcache.maxreclevel=0
memcache.maxfiles=0
memcache.archivememlim=0
memcache.maxfilesize=0
memcache.maxratio=0
Afterwards, we restart Apache so that our new PHP configuration takes effect:


Code:
/etc/init.d/apache2 restart


3 Configure vBulletin



Next open vBulletin's config.php file:


Code:
cd /var/www/www.example.com/web/forums/includes/
vi config.php
You should find something like this in it:


Code:
[...]
/*
$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;
*/
[...]
The /* ... */ means the section is commented out. Remove /* and */ from that section and save the file:


Code:
[...]

$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;

[...]
(If your memcached is running on another server or port, you must adjust these settings!)


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é.


Mã PHP:
 <?


$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'$tmpfalse10) 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

Theo:
Bình chọn bài viết
Điểm trung bình : Tổng điểm : 6 / 3
Bình chọn :
Đánh giá bài viết
Đánh giá bài viết
Họ và tên :
Email :
Nội Dung :
 

Tin mới hơn
Tin cũ hơn

Thiết kế web giá rẻ

Thiết kế web giá rẻ An GiangThiết kế web giá rẻ Bà Rịa-Vũng TàuThiết kế web giá rẻ Bắc GiangThiết kế web giá rẻ Bắc NinhThiết kế web giá rẻ Bến TreThiết kế web giá rẻ Bình ĐịnhThiết kế web giá rẻ Bình DươngThiết kế web giá rẻ Bình ThuậnThiết kế web giá rẻ Cà MauThiết kế web giá rẻ Cần ThơThiết kế web giá rẻ Đà NẵngThiết kế web giá rẻ Đắc LắcThiết kế web giá rẻ Đắc NôngThiết kế web giá rẻ Đồng NaiThiết kế web giá rẻ Đồng ThápThiết kế web giá rẻ Gia LaiThiết kế web giá rẻ Hà GiangThiết kế web giá rẻ Hà NamThiết kế web giá rẻ Hà NộiThiết kế web giá rẻ Hà TâyThiết kế web giá rẻ Hà TĩnhThiết kế web giá rẻ Hải DươngThiết kế web giá rẻ Hải PhòngThiết kế web giá rẻ Hồ Chí MinhThiết kế web giá rẻ Hoà BìnhThiết kế web giá rẻ HuếThiết kế web giá rẻ Hưng YênThiết kế web giá rẻ Khánh HoàThiết kế web giá rẻ Kiên GiangThiết kế web giá rẻ Kon TumThiết kế web giá rẻ Lâm ĐồngThiết kế web giá rẻ Lạng Sơn Thiết kế web giá rẻ Long AnThiết kế web giá rẻ Nam ĐịnhThiết kế web giá rẻ Nghệ AnThiết kế web giá rẻ Ninh BìnhThiết kế web giá rẻ Ninh ThuậnThiết kế web giá rẻ Phú ThọThiết kế web giá rẻ Phú YênThiết kế web giá rẻ Quảng BìnhThiết kế web giá rẻ Quảng NamThiết kế web giá rẻ Quảng NgãiThiết kế web giá rẻ Quảng NinhThiết kế web giá rẻ Quảng TrịThiết kế web giá rẻ Sài GònThiết kế web giá rẻ Sóc TrăngThiết kế web giá rẻ Sơn LaThiết kế web giá rẻ Tây NinhThiết kế web giá rẻ Thái BìnhThiết kế web giá rẻ Thái NguyênThiết kế web giá rẻ Thanh HoáThiết kế web giá rẻ Tiền GiangThiết kế web giá rẻ Trà VinhThiết kế web giá rẻ Tuyên QuangThiết kế web giá rẻ Vĩnh Long Thiết kế web giá rẻ Vĩnh PhúcThiết kế web giá rẻ Yên Bái