PHP memcache hakkında birkaç soru

2 Cevap php

1)
I understand I can call this

$memcache_obj = memcache_connect('memcache_host', 11211);

in the header files of my site with no impact on pages that don't use memcache but what about this

$memcache->connect('127.0.0.1', 11211);

Bu sayfa için ayrı bir sayfada aranmalıdır?


2)
what if the server does not have enough memory to write new caches and memcache tries to store a cache?


3)
I know keys can have up to a 30 day lifespan, Is there a way to flush all keys out of memory, especially useful for testing phase?

4)
Also this code, the first variable is connecting, so for example if I have 5 sections on a page that add/update/delete from memcache, do I need to run this connection everytime, or is it possible to connect 1 time and do everything per page load?

memcache_set($memcache_obj, 'var_key', 'some variable', 0, 30)

5) Is there a function or anything to show like how much memory is available and being used on a php page?

2 Cevap

  1. evet, hayır ağ aramaları .. vb almak silmek için bir girişimde kadar yapılır, bu yüzden ihtiyaç durumunda nesne tahsis etmek zarar vermez. (EDIT: Ben burada "memcached" uzantısı düşünüyordum, isabet en negligable olsa, "memcache" uzantısı aslında memcache sunucusuna bağlantı açmıyor çıkıyor)

  2. memcache yeni nesne için yer açmak için denemek için en az kullanılan öğeler düşecek

  3. $ Memcache_obj-> flush ();

  4. bağlamak, sadece kolay sayfanızın üstünde ya bir sınıf constructeri içinde bağlantı yerleştirmek için, bir kere komut çalıştırmak başına gerçekleşmesi gerekiyor

  5. $ Memcache_obj-> getStats () http://www.php.net/manual/en/function.memcache-getstats.php

Jason çok iyi sorularını yanıtladı ama bazı notlar eklemek olacağını düşündüm:

2) Eğer bir anahtar haline 1MB (varsayılan) daha fazla saklamak için çalışırsanız memcache uzantısı YANLIŞ değeri dönecektir unutmayın. Herhangi bir nedenle bir anahtar yazamaz eğer o da FALSE dönecektir.

3) Keys can) a> 30 günlük ömrü (TTL var. Sadece şimdiki zaman TTL ekleyin ve TTL olarak kullanmayın. Senin örneğin çağrı kullanarak, (netlik için kodlanmış) böyle bir şey olabilir:

$ttl = 60*60*24*60; // 60 days
$newTTL = time()+$ttl;
memcache_set($memcache_obj, 'cache_key', 'some data', 0, $newTTL)

PHP bellek bahsediyorsun 5) Eğer o memory_get_usage() ne istediğinizi alırsınız. Memcache bellek gelmek biraz zor ama getStats() çağrısı kullanarak doğru yönde size başlayacak.