2009-07-30 36 views
8

Cuối cùng tôi đã có memcache chạy trên máy tính ở nhà của tôi vì vậy tôi có thể bắt đầu phát triển với nó cuối cùng!Làm thế nào để bạn sử dụng memcache với PHP

Tôi không có một khởi đầu tốt mặc dù tôi đang cố gắng sử dụng các mã trên

php.net @ memcache-set Tôi không thể để có được một trong hai mã ví dụ để làm việc mà họ đăng

Tôi cố gắng này:

<?php 
/* procedural API */ 
$memcache_obj = memcache_connect('memcache_host', 11211); 
memcache_set($memcache_obj, 'var_key', 'some variable', 0, 30); 
echo memcache_get($memcache_obj, 'var_key'); 
?> 


Và sau đó

<?php 
/* OO API */ 
$memcache_obj = new Memcache; 
$memcache_obj->connect('memcache_host', 11211); 
$memcache_obj->set('var_key', 'some really big variable', MEMCACHE_COMPRESSED, 50); 
echo $memcache_obj->get('var_key'); 
?> 


Và có những sai sót từ các mã trên;

Warning: Memcache::connect() [memcache.connect]: Can't connect to memcache_host:11211, A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. (10060) in C:\webserver\htdocs\test\memcache\index.php on line 36 

Warning: Memcache::set() [memcache.set]: Failed to extract 'connection' variable from object in C:\webserver\htdocs\test\memcache\index.php on line 42 

Warning: Memcache::get() [memcache.get]: Failed to extract 'connection' variable from object in C:\webserver\htdocs\test\memcache\index.php on line 44 


sau đó tôi tìm thấy mã này trên mạng ở đâu đó và nó làm việc

<?php 
$memcache = new Memcache; 
$memcache->connect('localhost', 11211) or die ("Could not connect"); 

$tmp_object = new stdClass; 
$tmp_object->str_attr = 'test'; 
$tmp_object->int_attr = 123; 
// add cache 
$memcache->set('key', $tmp_object, false, 30) or die ("Failed to save data at the server"); 
echo "Store data in the cache (data will expire in 30 seconds)<br/>\n"; 
// get cache 
$get_result = $memcache->get('key'); 
echo "Data from the cache:<br/>\n"; 
var_dump($get_result); 
?> 


Làm thế nào tôi có thể lấy ví dụ từ PHP. net để làm việc mặc dù?


Ngoài ra tôi rất thích nhìn thấy bất kỳ mã emample liên quan đến memcache bạn có thể muốn chia sẻ tôi sẽ thực sự đánh giá cao khi nhìn thấy một số ví dụ làm việc

+0

Memcache có được thiết lập với số cổng mặc định (11211) và được đặt để nghe trên tất cả các giao diện không? – Kazar

+0

đây là seting của tôi [Memcache] memcache.allow_failover = 1 memcache.max_failover_attempts = 20 memcache.chunk_size = 8192 memcache.default_port = 11211 – JasonDavis

+0

đó là các thiết lập duy nhất mà tôi có kể từ khi tôi đang sử dụng một phiên bản windows – JasonDavis

Trả lời

10

Bạn nhận ra rằng bạn cần phải thay thế "memcache_host" với hostname của bạn và/hoặc localhost? Hay tôi thiếu điểm hoàn toàn? Ngoài ra, hãy thử telnet localhost 11211 và sau đó telnet your-memcache-host-name 11211 và xem bạn có nhận được kết quả tương tự không (bạn nên).

+0

bạn đúng là tôi đã bỏ qua điều đó, cảm ơn – JasonDavis

2

Nếu bạn muốn sử dụng Memcached với PHP cho một truy vấn cơ sở dữ liệu, đây là một ví dụ về những gì tôi đã sử dụng:

$memcache = new Memcache; 
$memcache->connect('127.0.0.1', 11211); 
$qry = QUERY; 
$C = connection to ur database; 
findValue($qry, $c); 

    function findValue($qry,$c) 
    { 
     $id = md5($qry); 

     if ($gotten = $memcache->get($id)) { 
       echo $id." retrieved from memcached </br> "; 
       return $gotten; 
     } else { 
      ### Daemon running but it was NOT cached 
      echo " from database (was NOT cached)"; 
      # Never mind - fetch it and store for next time! 
      $gotten = dbfetch($qry,$c); 
      $memcache->set($id,$gotten); 
      return $gotten; 
     } 
    } 
1

Tôi đang sử dụng có kinh nguyệt với php để giảm cơ sở dữ liệu của tôi nhấn bằng cách thực hiện một số điều như thế này

$memcache = new Memcache; 

    //Ip address and and port number. 
    $memcache->connect('192.168.xxx.xxx', 'xxxx'); 

    //Fetching data from memcache server 
    $arrobj = $memcache->get("arrobj"); 

    if(false == is_array($arrobj)) { 

     $arrobj = data retrieve from Database. 

     //Storing data in memcache server for 100 sec. 
     $memcache->set("arrobj", $arrobj, MEMCACHE_COMPRESSED, 100); 
    } 

Bạn cũng có thể lấy các ví dụ tại http://php.net/manual/en/memcache.set.php !!

Các vấn đề liên quan