2009-07-31 8 views
3

1)
Ich verstehe, kann ich nennen dieseEin paar Fragen zu PHP memcache

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

in den Header-Dateien von meiner Seite ohne Auswirkungen auf den Seiten, die nicht verwenden memcache aber was dies

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

Sollte dies auf einer Seite zu Seite Basis aufgerufen werden?


2)
was ist, wenn der Server nicht genügend Arbeitsspeicher hat neuen Caches und memcache zu schreiben versucht, einen Cache zu speichern?


3)
Ich weiß, Schlüssel bis zu einer 30-tägigen Lebensdauer haben kann, Gibt es eine Möglichkeit, alle Schlüssel aus dem Speicher zu leeren, besonders nützlich für die Testphase?

4)
Auch dieser Code, die erste Variable verbindet, so zum Beispiel, wenn ich 5 Abschnitte auf einer Seite, die/Update hinzufügen/löschen von memcache, muss ich diese Verbindung jedes Mal ausgeführt werden, oder ist es möglich, 1 mal zu verbinden und alles pro Seite zu laden?

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

5) Gibt es eine Funktion oder etwas ähnliches zu zeigen, wie viel Speicher verfügbar ist und auf einer PHP-Seite verwendet?

Antwort

8
  1. ja, werden keine Netzanrufe, bis ein Versuch gemacht, zu holen, löschen, etc ..., so dass es nicht das Objekt im Fall zuzuteilen verletzt es benötigt wird. (EDIT: Ich dachte an die "memcached" Erweiterung hier, stellt sich heraus, dass die "Memcache" Erweiterung tatsächlich eine Verbindung zum Memcache-Server öffnet, obwohl der Treffer höchstens vernachlässigbar ist)

  2. Memcache wird am wenigsten verwendet werden Elemente, um Platz für das neue Objekt zu schaffen

  3. $ memcache_obj-> flush();

  4. Verbindung nur einmal pro Skript laufen muss geschehen, am einfachsten, die Verbindung am oberen Rand der Seite oder in einer Klasse constructer

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

+0

ich danke Ihnen, Sie sind der Memcache-Typ Ich habe viele Ihrer Beiträge zu diesem Thema gesehen. Auch ich fügte 1 weitere Frage oben hinzu, wenn Sie sich interessieren, um zu schauen – JasonDavis

1
  1. http://uk3.php.net/manual/en/function.memcache-connect.php legt nahe, dass memcache_connect() die gleiche ist wie eine Memcache Instanziieren und verbinden() aufrufen, auf sie
  2. http://code.google.com/p/memcached/wiki/FAQ#What_is_memcached%27s_cache? sagt: "Wenn der Server nicht genügend Arbeitsspeicher hat, werden die abgelaufenen Platten zuerst ersetzt, dann gehen die ältesten ungenutzten Platten als nächstes."
  3. Starten Sie die Memcached Instanz oder flush nennen, die alle Cache-Elemente auf dem Server
3

Jason antwortete sehr gut Ihre Fragen entkräften, aber ich dachte, dass ich ein paar Notizen hinzufügen würde:

2) Wenn Sie versuchen, mehr als 1 MB (Standard) in einem Schlüssel zu speichern, gibt die Memcache-Erweiterung einen FALSE-Wert zurück.

3) Schlüssel kann haben eine> 30 Tage Lebensdauer (TTL) dd die TTL auf die aktuelle Zeit und verwende das als TTL. Mit Ihrem Beispiel Aufruf, könnte es so etwas wie dieses (codiert für Klarheit) sein:

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

5) Wenn Sie PHP-Speicher sprechen werden dann memory_get_usage() erhalten Sie, was Sie wollen. Memcache-Speicher ist ein wenig schwieriger zu bekommen, aber mit dem getStats() Anruf starten Sie in die richtige Richtung.