Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung und Anwendung von Debugging-Methoden in PHP mittels Memcache

Einführung und Anwendung von Debugging-Methoden in PHP mittels Memcache

WBOY
WBOYOriginal
2016-08-08 09:29:33833Durchsuche

Einführung und Anwendung von Debugging-Methoden in PHP unter Verwendung von Memcache

Wenn wir uns in der Netzwerkentwicklung befinden, Insbesondere bei der Entwicklung von Web-Projekten mit großen Besuchen wählen wir memcahce, um die Reaktionsgeschwindigkeit zu verbessern und Datenabfragevorgänge zu reduzieren. Zuerst müssen wir es installieren. Als nächstes erklären wir, wie man Memcache verwendet und wie man es unter Linux installiert Installation und Konfiguration unter Windows sind wie folgt:

1. MemcacheInstallation unter Linux:

1.Laden Sie die Memcache-Version von Linux, bitte beachten Sie, dass memcached libevent ereignisgesteuert verwendet, daher müssen Sie libevent zuerst. 2.

Installieren Sie

pecl::memcache. Verwenden Sie das Befehlszeilentool

pecl

zur Installation: pecl install memcache

oder installieren Sie direkt von der Quelle:

phpize

./configure

make

make install

2.

Windows

MemcacheInstallation: 1.

Download

MemcacheWindows stabile Version, entpacken Sie sie und legen Sie sie unter einer bestimmten Festplatte ab, z. B. c:memcached2

im Terminal (d. h.

cmd Befehlsschnittstelle) Geben Sie „c:memcachedmemcached.exe -d install“ ein, um 3 zu installieren .

Geben Sie dann „

c:memcachedmemcached.exe -d start“ ein, um zu beginnen. HINWEIS: Zukünftig wird memcached als Dienst von Windows Bei jedem Einschalten automatisch starten. Die Serverseite ist nun installiert. 4.Laden Sie

http://pecl4win.php.net/ext.php/php_memcache.dll herunter, bitte finden Sie die entsprechende Datei Sie selbst php Version der Datei 5. Fügen Sie eine Zeile zu

C:winntphp.ini hinzu 'extension=php_memcache.dll'6.

Apache neu starten , und überprüfen Sie dann phpinfo. Wenn Memcache vorhanden ist, ist die Installation erfolgreich! 3. Grundeinstellungen von memcached

: -p Listening Port

-l Verbunden

IPAdresse, standardmäßig der lokale Computer-d Start Starten

memcachedDienst-d Neustart Neustarten

memcachedDienst -d stop|shutdown Beenden Sie den laufenden

memcached-Dienst -d install Installieren

memcachedDienst-d uninstall Deinstallieren

memcachedDienst-u Ausführen als

( ist nur gültig, wenn es als root ausgeführt wird)-m Maximale Speichernutzung, Einheit

MB. Standard64 MB-M Fehler zurückgeben, wenn der Speicher erschöpft ist, anstatt Elemente zu löschen

-c Maximale Anzahl gleichzeitiger Verbindungen , der Standardwert ist

1024-f Blockgrößen-Wachstumsfaktor, der Standardwert ist

1,25-n Minimal zugewiesen Leerzeichen, Schlüssel+Wert+FlagsDer Standardwert ist 48-h Hilfe anzeigen

4. Konfiguration in php.ini

:[Memcache]

Ein leistungsstarkes verteiltes Speicherobjekt-Cache-System, das zum Speichern von Daten in verschiedenen Formaten, einschließlich Bildern, verwendet werden kann, indem eine einheitliche riesige Hash-Tabelle im Speicher, Videos, Dateien usw. verwaltet wird Datenbanksuchergebnisse usw.

Ob ein transparentes Failover auf andere Server durchgeführt werden soll, wenn Fehler auftreten.

memcache.allow_failover = Ein

Die maximale Anzahl von Servern, die beim Empfangen und Senden von Daten ausprobiert werden sollen, nur gültig, wenn memcache.allow_failover aktiviert ist. memcache.max_failover_attempts = 20

Daten werden entsprechend der durch diesen Wert festgelegten Blockgröße übertragen. Kleinere Werte erfordern mehr zusätzlichen Netzwerkverkehr. Wenn Sie unerklärliche Verlangsamungen bemerken, können Sie versuchen, diesen Wert auf 32768 zu erhöhen.

memcache.chunk_size = 8192

Der standardmäßige TCP, der beim Herstellen einer Verbindung zum memcached verwendet wird Server-Port.

memcache.default_port = 11211

steuert die Strategie der Zuordnung von Schlüssel zu Server. Der Standardwert "standard" bedeutet, die alte Hash-Strategie aus der vorherigen Version zu verwenden.

ist auf „konsistent“ eingestellt, um das Hinzufügen von / zum Verbindungspool zu ermöglichen, ohne den Server neu zu berechnen.Schlüssel und Server.

memcache.hash_strategy = "standard";

steuert die Zuordnung von

Schlüssel zu Server Hash-Funktion. Der Standardwert "crc32" verwendet den Algorithmus CRC32, während "fnv" Zeigt die Verwendung des FNV-1a-Algorithmus an. FNV-1a ist etwas langsamer als CRC32, hat aber einen besseren Hashing-Effekt.

memcache.hash_function = "crc32"

Memcache

kann auch als Speichermodul für Sitzung,Einzelheiten finden Sie unter : memcache PHP s session.save_handler. 1. $memcache = neuer Memcache;

2. $memcache->connect('localhost', 11211) oder die ("Verbindung konnte nicht hergestellt werden"); getVersion();

5. echo "Serverversion: ".$version."
n"

7. $tmp_object = new stdClass;

8. $tmp_object->str_attr = 'test'

9. $tmp_object->int_attr = 123;

10.

11. $memcache->set('key', $tmp_object, false, 10) or die („Fehler beim Speichern der Daten auf dem Server“);

12. echo „Daten speichern im Cache (Daten laufen in 10 Sekunden ab)
n";

13.

14. $get_result = $memcache->get( 'key');

15. echo "Daten aus dem Cache:
n";

16.

17. var_dump($get_result); und

Memcache

konfiguriert, nun wie man

Memcache debuggt.

ein Test.

Erstellen Sie zunächst eine Tabelle: Erstellen Sie die Tabelle t(id char(36) not null Primary Key, username varchar(20) not null);Einige Daten einfügen: In t-Werte einfügen (uuid(),'Livia'),(uuid(),'Lucy'),(uuid(),'Sivia'),(uuid(),'david' );

Schreiben Sie ein einfaches Skript, um es zu testen.

$host = '192.168.1.21:3306'; 

$user = 'webuser'; 

$passwd = '123456'; 

$db = 'test'; 

$conn = mysql_connect($host,$user,$passwd); 

mysql_select_db($db,$conn); 

$sql = 'select * from t order by id desc'; 

$result = mysql_query($sql,$conn); 

while ($row = mysql_fetch_array($result,MYSQL_ASSOC)){ 

$test_key[] = $row; 

$sql = md5($sql); 

$mem = neuer Memcache; 

$mem->connect("192.168.1.21", 11211); 

$mem->set($sql,$test_key, MEMCACHE_COMPRESSED, 600);

print_r($mem->get($sql)); 

?>

  看看结果出来了。

C:>php -f "d:/lamp/web2/phpinfo.php" 

Array 

[0] => Array 

[id] => d8f1ec2a-c033-11dd-bd1a- 002215c94322 

[Benutzername] =>  david 

)

[1] =>  Array 

[id] => d8f1eb9e-c033-11dd-bd1a-002215c94322 

[Benutzername] => Sivia 

[2] => Array 

[id] => d8f1ea9a-c033-11dd-bd1a-002215c94322 

[Benutzername] => Lucy 

)

[ 3] => Array 

[Benutzername] => Livia 

)

)

现在我们已经介绍

Memcache

安装,不再赘述。再次着重介绍

Memcache 的一些常用方法.Memcache::add // 添加一个值,如果已经存在,则返回

false

Memcache::addServer // 添加

Memcache

地址Memcache::close // 关闭一个

Memcache

的连接Memcache::connect // 打开一个到

Memcache

的连接 Memcache::decrement // 对保存的某个

Taste

中的值进行减法操作Memcache: :delete // 删除一个

Memcache

上的keyMemcache:: Flush // 刷新所有

Memcache

上保存的项目(类似于删除所有的保存的项目)Memcache::get //

Memcache

上获取一个keyMemcache::getExtendedStats // 获取进程池中所有进程的运行系统统计

Memcache::getServerStatus // 获取运行服务器的参数

Memcache::getStats // 获取当前

Memcache

服务器运行的状态Memcache::getVersion // 返回运行的

Memcache

的版本信息Memcache::increment // 对保存的某个

key

中的值进行加法操作Memcache::pconnect // 打开一个到

Memcache

的长连接Memcache:: ersetzen // 替换一个已经存在

Memcache

服务器上的项目(功能类似Memcache::set Memcache::set // 

Memcache

Memcache ::setCompressThreshold // 对大于某一大小的数据进行压缩Memcache::setServerParams // 在运行时修改服务器的参数

> .0 .0.1", 12000);

//Memcache::set Methode hat vier Parameter, der erste Parameter ist Schlüssel, der zweite Parameter ist Wert, der dritte Parameter ist optional und gibt an, ob komprimiert und gespeichert werden soll, der vierte Parameter ist optional und dient zum Festlegen einer Zeit für die automatische Zerstörung nach Ablauf.

$mem->set('test','123',0,60);

//Memcache::addMethodenfunktion und Die Memcache::set-Methode ist ähnlich, der Unterschied besteht darin, dass der Rückgabewert der Memcache::add-Methode ist false, was darauf hinweist, dass der Schlüssel bereits vorhanden ist und die Methode Memcache::set ihn direkt überschreibt .

$mem->add('test','123',0,60);

//Die Funktion der Memcache::get-Methode ist Um einen Schlüssel-Wert zu erhalten, verfügt die Memcache::get-Methode über einen Parameter, der Schlüssel .

$mem->get('test');//

Die Ausgabe ist '123'

//Memcache : Die Methode :replace

dient zum Überschreiben eines vorhandenen Schlüssels. Die Methode Memcache::replace hat die vier Parameter die gleiche Funktion wie die Methode Memcache::set.

$mem->replace('test','456',0,60);

//Memcache::delete

Die Funktion der Methode ist Um einen Schlüssel-Wert zu löschen, hat die Memcache::delete-Methode zwei Parameter, der erste Parameter stellt den Schlüssel dar , der zweite Parameter ist optional und gibt die Löschverzögerungszeit an.

$mem->delete('test',60);

?>

                          Xiao Chenghu

PHP-Caching-Anwendung: PHP MEMCACHE Detaillierte Erklärung

2010-01-28 09:38:44 Quelle: China Webmaster Site Comprehensive [Groß, Mittel, Klein] Kommentare: 0 Ich möchte beitragen Diesen Artikel sammeln Auf Weibo teilen

Station Long Transaction (http://jy.chinaz.com) hilft Webmastern, Geld zu verdienen. Bewertung virtueller Hosts + IDC-Navigation = IDC123.COM

Die Memcache-Funktionsbibliothek befindet sich in PECL (PHP Extension Community Library). Die Hauptfunktion besteht darin, einen temporären Speicherbereich für Speicherdaten mit großer Kapazität zu erstellen, der bei Verteilung sehr effektiv ist. Andernfalls wird die Verwendung nicht empfohlen. Nach der Installation und Ausführung unter Ubuntu erscheint eine Fehlermeldung:


/usr/local/memcached/ bin/ memcached: Fehler beim Laden gemeinsam genutzter Bibliotheken: libevent-1.4.so.2:
gemeinsame Objektdatei kann nicht geöffnet werden: Keine solche Datei oder kein solches Verzeichnis


/usr/local/memcached/bin/memcached: error while loading shared libraries: libevent-1.4.so.2: 
cannot open shared object file: No such file or directory 

Folgen Sie der Methode in „libeven, memcached, libmemcache-Installation“ und verwenden Sie:

sudo ln -s /usr/local/lib/libevent-1.4.so.2 /usr/lib/libevent-1.4.so.2

sudo ln - s /usr/local/lib/libevent-1.4.so.2 /usr/lib/libevent-1.4.so.2

Kann Dieser Fehler muss behoben werden

Installieren Sie das Memcached-Modul von PHP über Xindeli, heben Sie die Registrierung des „;“ in /etc/php5/conf.d/memcached.ini auf, starten Sie Apache neu und rufen Sie phpinfo() auf, um das Memcached anzuzeigen Information.


$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("Could not connect");    
$version = $memcache->getVersion();    
echo "Server's version: ".$version."n";    
?>


$memcache = new Memcache
$memcache- >connect('localhost', 11211) or die ("Verbindung konnte nicht hergestellt werden");
$version = $memcache->getVersion();
echo "Serverversion: ".$version."n "; 
?>

1. 

2. $memcache = new Memcache;

3. $memcache->connect('localhost', 11211) or die ("Could not connect");    

4. print_r($memcache->getStats());    

5. /**   

6. * Array   

7. * (   

8. *     [pid] => 8052   

9. *     [uptime] => 9205   

10. *     [time] => 1205898428   

11. *     [version] => 1.2.5   

12. *     [pointer_size] => 32   

13. *     [rusage_user] => 0.008000   

14. *     [rusage_system] => 0.000000   

15. *     [curr_items] => 1   

16. *     [total_items] => 17   

17. *     [bytes] => 57   

18. *     [curr_connections] => 2   

19. *     [total_connections] => 15   

20. *     [connection_structures] => 3   

21. *     [cmd_get] => 9   

22. *     [cmd_set] => 23   

23. *     [get_hits] => 5   

24. *     [get_misses] => 4   

25. *     [evictions] => 0   

26. *     [bytes_read] => 671   

27. *     [bytes_written] => 850   

28. *     [limit_maxbytes] => 10485760   

29. *     [threads] => 1   

30. * )   

31. */    

32. ?>  


01.02.$memcache = new Memcache;
03.$memcache->connect('localhost', 11211) or die ("Could not connect"); 
04.$memcache->set( 'name', 'leo', 0, 30); 
05.if(!$memcache->add( 'name', 'susan', 0, 30)) 
06.{ 
07. echo 'susan is exist'; 
08.}; 
09.$memcache->replace( 'name', 'lion', 0, 300); 
10.echo $memcache->get( 'name'); 
11.$memcache->delete( 'name', 5); 
12.?> 


01.02.function _callback_memcache_failure($host, $port) {
03. print "memcache '$host:$port' failed";
04.}
05.$memcache = new Memcache;
06.$memcache->addServer('192.168.1.116', 11211); 
07.$memcache->setServerParams('192.168.1.116', 11211, 1, 15, true, 
08. 
09.'_callback_memcache_failure'); 
10.echo $memcache->getServerStatus('192.168.1.116', 11211); 
11.?> 

PHP-Caching-Anwendung: PHP MEMCACHE ausführliche Erklärung (2)

28.01.2010 09:38:44 Quelle: China Webmaster Comprehensive [Groß, Mittel, Klein] Kommentare: 0 Ich möchte einen Beitrag leisten und Setzen Sie ein Lesezeichen auf diesen Artikel. Teilen Sie ihn auf Weibo

Webmaster-Handel (http://jy.chinaz.com) hilft Webmastern, Geld zu verdienen. Bewertung virtueller Hosts + IDC-Navigation = IDC123.COM

Der Memcached-Dienst wird offiziell gestartet

Es wird empfohlen, zum Testen dieser Bibliothek einen objektorientierten Ansatz zu verwenden:

Die Funktion der Methode Memcache::getVersion besteht darin, die Versionsinformationen des laufenden Memcaches zurückzugeben.

Die Methode Memcache::getStats wird verwendet, um einige laufende Statistiken des Servers zurückzugeben. Die Memcache::getStats-Methode verfügt über drei Parameter: „Reset“, „Malloc“, „Maps“, „Cachedump“, „Slabs“, „Items“ und „Sizes“. Die Methode Memcache::getExtendedStats wird verwendet, um die laufenden Systemstatistiken aller Prozesse im Prozesspool abzurufen.

Die Funktion memcache_debug() wird zur Steuerung der Debugging-Funktion verwendet. Voraussetzung ist, dass beim Kompilieren von PHP die Option –enable-debug verwendet wird, da diese Funktion sonst keine Wirkung hat.

Die Memcache::addServer-Methode wird verwendet, um eine Serveradresse hinzuzufügen. Die Memcache::addServer-Methode verfügt über 8 Parameter. Mit Ausnahme des ersten Parameters stellt die Adresse des Servers dar, der zweite Parameter stellt den Port dar, der dritte Parameter stellt dar, ob es sich um eine dauerhafte Verbindung handelt, der vierte Parameter stellt das Gewicht dieses Servers unter allen Servern dar und der fünfte Parameter stellt die Dauer der Verbindung dar Der sechste Parameter stellt das Intervall zwischen Verbindungswiederholungen dar. Die Einstellung auf -1 bedeutet, dass der siebte Parameter zum Festlegen einer Fallback-Funktion verwendet wird Fehlermeldungen.

Die Methode Memcache::setServerParams wird verwendet, um die Parameter des Servers zur Laufzeit zu ändern. Die Methode Memcache::setServerParams verfügt über sechs Parameter, und der Methode Memcache::addServer fehlen der dritte und der vierte Parameter. Die Methode Memcache::getServerStatus wird verwendet, um die Parameter des laufenden Servers abzurufen. Die beiden Parameter repräsentieren die Adresse bzw. den Port.

Die Funktion der Memcache::flush-Methode besteht darin, alle zwischengespeicherten Daten zu löschen, den verwendeten Speicherplatz jedoch nicht zu reduzieren.

Die Methode Memcache::increment wird verwendet, um den Wert in einem gespeicherten Schlüssel zu addieren, und die Methode Memcache::decremen wird verwendet, um den Wert in einem gespeicherten Schlüssel zu subtrahieren.

Detaillierte Erläuterung der erweiterten Caching-Anwendung PHP MEMCACHE Artikeleintrag: 7747.Net Verantwortlicher Redakteur: 7747.Net 269

[Schriftart: Klein Groß]


01.02.$memcache = new Memcache;
03.$memcache->connect('localhost', 11211); 
04.$memcache->set('test_item', 8); 
05.$memcache->increment('test_item', 4); 
06.echo $memcache->decrement('test_item', 7); 
07.// 显示 5 
08.?> 


01.02.$memcache = new Memcache
03.$memcache->connect(' localhost', 11211);
04.$memcache->set('test_item', 8); $memcache ->decrement('test_item', 7);
07.// Display 5
08.?>

Die Memcache-Funktionsbibliothek befindet sich in PECL (PHP Extension Community Library). Ihre Hauptfunktion besteht darin, einen temporären Speicherbereich für Speicherdaten mit großer Kapazität aufzubauen. Ich habe

auf Ubuntu installiert und als ich es fertig ausgeführt habe, habe ich einen Fehler gemeldet:

/usr/local/memcached/bin/memcached: Fehler beim Laden gemeinsam genutzter Bibliotheken: libevent-1.4.so.2:


Freigegebene Objektdatei kann nicht geöffnet werden: Keine solche Datei oder kein solches Verzeichnis

Folgen Sie der Methode in „Installation von libeven, memcached, libmemcache“, verwenden Sie:

sudo ln -s /usr /local/lib /libevent-1.4.so.2 /usr/lib/libevent-1.4.so.2

Sie können diesen FEHLER beheben


Installieren Sie das Memcached-Modul von PHP über Xindeli und melden Sie sich von /etc ab /php5/conf „;“ in .d/memcached.ini, Apache neu starten

, phpinfo() aufrufen, um Memcached-Informationen anzuzeigen

Ausführung:

$memcache = new Memcache;

$memcache->connect('localhost', 11211) or die ("Verbindung konnte nicht hergestellt werden");
$version = $memcache->getVersion();
echo „Serverversion: „.$version.“
n“; connect(' localhost', 11211) or die ("Verbindung konnte nicht hergestellt werden");
print_r($memcache->getStats());
$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("Verbindung konnte nicht hergestellt werden"); set( ' name', 'leo', 0, 30);
if(!$memcache->add( 'name', 'susan', 0, 30))
{
echo ' susan ist vorhanden ';
$memcache->replace( 'name', 'lion', 0, 300);
echo $memcache->get( 'name'); 🎜>$ memcache->delete( 'name', 5);
?>
function _callback_memcache_failure($host, $port) {
print "memcache '$ host:$ port' failed";
}
$memcache = new Memcache;
$memcache->addServer('192.168.1.116', 11211);
$memcache->setServerParams( '192.168. 1.116', 11211, 1, 15, true,
'_callback_memcache_failure');
echo $memcache->getServerStatus('192.168.1.116', 11211);
>< ?php
$memcache = new Memcache;
$memcache->set('test_item', 8); >$memcache ->inkrementieren('test_item', 4);
echo $memcache->dekrementieren('test_item', 7);
// Display 5
?>

/usr/local/bin/memcached -d -m 10 -u root -l 127.0.0.1 -p 11211 -c 256 -P
/tmp/memcached.pid
Der Memcached-Dienst ist offiziell gestartet

Memcache::add – Füge einen Wert hinzu, wenn er bereits existiert, gib false zurück
Memcache::addServer – Füge eine Serveradresse zur Verwendung hinzu
Memcache::close – Schließe ein Memcache-Objekt
Memcache::connect – Erstellen Sie ein Memcache-Objekt
memcache_debug – Steuern Sie die Debugging-Funktion
Memcache::decrement – ​​Subtrahieren Sie den Wert in einem gespeicherten Schlüssel
Memcache::delete – Löschen Sie einen Schlüsselwert
Memcache ::flush – Alle zwischengespeicherten Daten löschen
Memcache::get – Einen Schlüsselwert abrufen
Memcache::getExtendedStats – Die laufenden Systemstatistiken aller Prozesse im Prozesspool abrufen
Memcache::getServerStatus – Den abrufen Parameter des laufenden Servers
Memcache::getStats – Gibt einige laufende Statistiken des Servers zurück
Memcache::getVersion – Gibt die Versionsinformationen des laufenden Memcache zurück
Memcache::increment – ​​Für einen gespeicherten Wert hinzufügen im Schlüssel
Memcache::pconnect – Erstellen Sie ein persistentes Memcache-Verbindungsobjekt
Memcache::replace – R überschreiben Sie einen vorhandenen Schlüssel
Memcache::set – Fügen Sie einen Wert hinzu. Wenn er bereits vorhanden ist, überschreiben Sie ihn
Memcache::setCompressThreshold – Daten komprimieren, die größer als eine bestimmte Größe sind Memcache::setServerParams – Serverparameter zur Laufzeit ändern

Es wird empfohlen, objektorientierte Methoden zum Testen dieser Bibliothek zu verwenden:

Die Funktion der Methode Memcache::getVersion besteht darin, die Versionsinformationen des laufenden Memcaches zurückzugeben.

Die Methode Memcache::getStats wird verwendet, um einige laufende Statistiken des Servers zurückzugeben. Die Memcache::getStats-Methode verfügt über drei Parameter

. Der erste Parameter gibt den angeforderten Rückgabetyp an: Reset, Malloc, Maps, Cachedump, Slabs, Items, Größen; Der dritte Parameter wird verwendet, wenn der erste Parameter auf „cachedump“ eingestellt ist. Die Funktion

der Methode Memcache::getExtendedStats besteht darin, die laufenden Systemstatistiken aller Prozesse im Prozesspool abzurufen.

Die Methode Memcache::connect wird zum Erstellen eines Memcache-Objekts verwendet. Die Memcache::pconnect-Methode wird verwendet, um ein

Memcache-Persistent-Verbindungsobjekt zu erstellen. Die Methode Memcache::close wird zum Schließen eines Memcache-Objekts verwendet.

Die Funktion der Memcache::set-Methode besteht darin, einen Wert hinzuzufügen. Der erste Parameter ist der Schlüssel . Drei Parameter sind optional und geben an, ob komprimiert und gespeichert werden soll. Der vierte Parameter ist optional und dient zum Festlegen einer Zeit für die automatische Zerstörung nach Ablauf

. Die Memcache::add-Methode ähnelt der Memcache::set-Methode. Der Unterschied besteht darin, dass, wenn der Rückgabewert der Memcache::add-Methode

false ist, bedeutet, dass der Schlüssel bereits vorhanden ist Die Memcache::set-Methode wird direkt überschrieben. Die Funktion der Memcache::get-Methode besteht darin, einen Schlüsselwert von

abzurufen. Die Memcache::get-Methode verfügt über einen Parameter, der den Schlüssel angibt. Die Memcache::replace-Methode wird verwendet, um einen vorhandenen

Schlüssel zu überschreiben. Die Memcache::replace-Methode verfügt über vier Parameter und hat die gleiche Funktion wie die Memcache::set-Methode.

Die Funktion der Memcache::delete-Methode besteht darin, einen Schlüsselwert zu löschen. Der erste Parameter stellt den Schlüssel dar

, und der zweite Parameter ist optional und stellt die Löschverzögerungszeit dar.

Die Funktion memcache_debug() wird zur Steuerung der Debugging-Funktion verwendet, vorausgesetzt, dass die Option –enable-debug beim Kompilieren von PHP verwendet wird, andernfalls

hat diese Funktion keine Wirkung.


Die Funktion der Memcache::addServer-Methode besteht darin, eine Serveradresse hinzuzufügen, die verwendet werden kann. Die Memcache::addServer-Methode verfügt über 8 Parameter

Sind optional, der erste Parameter stellt die Adresse des Servers dar, der zweite Parameter stellt den Port dar, der dritte

Parameter stellt dar, ob es sich um eine dauerhafte Verbindung handelt, und der vierte Parameter stellt den Standort dieses Servers unter allen Servern dar . Das Gewicht der Verbindung, die fünfte Parametertabelle

gibt die Dauer der Verbindung an, der sechste Parameter gibt das Intervall zwischen Verbindungswiederholungen an, der Standardwert ist 15, die Einstellung -1 bedeutet keine Wiederholung, der siebte Parameter Der Parameter

dient zur Steuerung des Online-Status des Servers. Der 8. Parameter ermöglicht die Einstellung einer Fallback-Funktion zur Behandlung von Fehlermeldungen. Die Methode

Memcache::setServerParams wird verwendet, um die Parameter des Servers zur Laufzeit zu ändern. Die Methode Memcache::setServerParams

verfügt über sechs Parameter, und der Methode Memcache::addServer fehlen der dritte und der vierte Parameter. Die Memcache::getServerStatus-Methode


wird verwendet, um die Parameter des laufenden Servers abzurufen. Die beiden Parameter repräsentieren die Adresse bzw. den Port.

Die Memcache::flush-Methode wird zum Löschen aller zwischengespeicherten Daten verwendet, reduziert jedoch nicht den verwendeten Speicherplatz.

Die Methode

Memcache::increment wird verwendet, um den Wert in einem gespeicherten Schlüssel zu addieren, und die Methode Memcache::decremen wird verwendet, um den Wert in einem gespeicherten Schlüssel zu subtrahieren.

Discuz!s Memcache-Cache-Implementierung

Vorwort:
In einer PHP+MySQL-Architektur-Site konzentriert sich dieser Artikel auf die Analyse, wie das Discuz-Forum (oder ein ähnliches PHP+MySQL-Architekturprogramm) aus der Perspektive von MySQL mit großen Besuchen zurechtkommt. Gleichzeitig werden einige Vorschläge zur Verwendung von Memcache gemacht, um den Druck auf MySQL zu verringern. Viele der Daten sind das Ergebnis persönlicher Tests. Wenn Sie anderer Meinung sind, hinterlassen Sie bitte eine Nachricht. Außerdem ist das Schreiben aufgrund persönlicher Denkprobleme etwas sprunghaft, daher erkläre ich es hiermit!
Systemanalyse:
Einfach aus der Perspektive von MySQL sollte es nicht sehr schwierig sein, eine einzelne MySQL-Datenbank zu laden, bis Hunderte Millionen Vorgänge pro Tag (ungefähr 1.100 MySQL-Vorgänge pro Sekunde, dann multipliziert mit 86.400) von Bedeutung sind . Nach diesen Daten ist es für ein Forum mit einem einzelnen MySQL-Server kein Problem, 20 Millionen PV zu erreichen. Ich glaube, dass die meisten inländischen Foren nicht 20 Millionen PV pro Tag erreichen können, aber die tatsächliche Situation ist nicht so. Wenn die PV des Forums eine Million überschreitet, ist ein WEB bereits überlastet.
Nach einigen mir vorliegenden Daten wird die aktuelle grundlegende Serverarchitektur von Discuz! Forum vorne von Squid und hinten von einer Datenbank unterstützt. In dieser Architektur kann der erhöhte Druck auf den Webserver durch paralleles Hinzufügen von Servern gelöst werden. Der Druck auf MySQL kann jedoch nirgendwo gelöst werden. Ohne Berücksichtigung des offiziellen MySQL-Dienstes können wir die Belastung des MySQL-Servers durch eine angemessene Nutzung verringern von Memcache.
Einige Freunde mögen sagen, dass wir die Datentabelle in Untertabellen unterteilen können (Hinweis: Untertabelle bezieht sich hier auf Untertabellen über PHP-Programme wie pw, dv untertabellen), aber die aktuelle Situation ist ein DB-Server Es kann die aktuelle Datenverarbeitung nicht mehr unterstützen und die Aufteilung von MySQL-Tabellen über PHP kann die Belastung von MySQL immer noch nicht reduzieren. (Hinweis: Dieser Absatz bezieht sich auf ein bereits gebildetes System. Wenn es sich um ein unabhängig entwickeltes System handelt, empfiehlt es sich, die Datenpartitionierung in der frühen Phase der Architektur zu synchronisieren.)
Einige Freunde empfehlen möglicherweise auch die Verwendung von MySQLs Master-Slave Architektur Wenn Sie diese Frage aufwerfen, werde ich Ihnen ganz klar sagen, gehen Sie zurück und lesen Sie das Handbuch. Im MySQL-Master/Slave-Modus wird der Slave hauptsächlich zum Sichern von Daten verwendet. Erst wenn der Master ausfällt, übernimmt der Slave den Dienst des Masters und verarbeitet externe Anfragen, bis der Master wieder in den Normalzustand zurückkehrt. Das heißt: Bei Master/Slave dient entweder der Master oder der Slave, und Master/Slave erbringt nicht gleichzeitig Dienste. Die Verwendung von MySQL-Master-Slave kann die Auslastung von MySQL immer noch nicht wirksam reduzieren.
Vielleicht werden Sie mich fragen, warum ich MySQL Cluster nicht verwende. Es ist eine Geldverschwendung. Mit dem gleichen Geldbetrag ist es der beste Weg, den maximalen Nutzen zu erzielen. PS: Um einen Exkurs zu machen: Das MySQL-Handbuch erklärt MySQL-Cluster als MySQL-Cluster, was ich nicht gewohnt bin.
Tatsächlich ist die MySQL-Partition in MySQL 5.1 eine sehr gute Sache. Sie ermöglicht die Zuweisung mehrerer Teile einer einzelnen Tabelle über das Dateisystem nach Regeln, die auf eine beliebige Größe eingestellt werden können. Tatsächlich werden verschiedene Teile der Tabelle als separate Tabellen an verschiedenen Orten gespeichert. Ich denke, dass dies unter den gegenwärtigen Umständen eine der aktivsten und effektivsten Lösungen ist, um die MySQL-Last zu reduzieren. Aber leider habe ich keine persönlichen Erfahrungen mit dieser MySQL-Partitionierungsmethode und es gibt keine ausreichenden Fälle, die belegen, dass sie stabil oder instabil ist. Also wandere ich immer noch. Wenn Sie es wissen, sagen Sie es mir bitte! Einige Freunde sagten, dass Tencent MySQL-Partitionierung verwendet, aber leider habe ich nicht die genauen Daten erhalten.
Nachdem ich so viele Möglichkeiten zur Reduzierung der MySQL-Last und unter bestimmten Bedingungen, wie z. B. den Anforderungen der Benutzerumgebung, analysiert und zusammengefasst habe, bin ich zu dem Schluss gekommen, dass unter den aktuellen Umständen der effektivere Weg zur Linderung der MySQL-Last des Discuz! Forum soll Memcache verwenden!
Gründe für die Verwendung von Memcache:
1. Webserver (Lighttpd und Nginx sollen viel effizienter sein als Apache, Sie können es ausprobieren) haben hohe CPU-Anforderungen und niedrige Speicheranforderungen; Anforderungen, die einen hohen Speicherbedarf haben, sodass sie zusammen verwendet werden können. Es ist möglich, Memcached Server auf dem Front-End-Webserver zu installieren.
2. Geld, Geld, Geld, der geringste Aufwand, der größte Nutzen.
3. Für ein System mit einer vernünftigen Architektur kann das Hinzufügen von Memcache-Unterstützung nur ein Prozess der Stapelverarbeitung von Dateien sein.
Discuz!
$memcacheport = 11211;
$memcachelife = 60;
2. In include/common.inc.php
$mem = new Memcache ;
$mem->connect($memcachehost, $memcacheport);
3. Ändern Sie die fetch_array- und query-Methoden in include/db_mysql.class.php und fügen Sie die query_mysql-Methode hinzu:
function fetch_array($query, $result_type = MYSQL_ASSOC) {
return is_resource($query) ? mysql_fetch_array($query, $result_type) : $query[0];
function query_memcache($ sql, $type = '') {
global $mem,$memcachelife;
$key = md5($sql); ))) {
$query = $this->query($sql, $type);
while($item = $this->fetch_array($query)) {
$res[ ] = $item;
}
$query = $res;
$mem->set($key, $query, 0, $memcachelife); ;
}
function query($sql, $type = '') {
global $debug, $discuz_starttime, $sqldebug, $sqlspenttimes; && @function_exists('mysql_unbuffered_query') ?
'mysql_unbuffered_query' : 'mysql_query';
if(!($query = $func($sql, $this->link)) && $type != ' SILENT') {
$this->halt('MySQL Query Error', $sql);
}
if(substr($sql, 0, 6) == 'SELECT') {
echo 'Cache SQL:'.$sql.'
'; else {
echo 'Flash SQL:'.$sql.'
'; $this->querynum++;
return $query;
}
4. Ändern Sie den Code der SQL-Abfrage, die von Memcache zwischengespeichert werden muss zu
$db->query_memcache(
Beachten und ändern Sie
while($post = $db->fetch_array($query)) {
zu
foreach($query as $ post ) {
$db->fetch_array ohne while muss nicht geändert werden.
Nehmen Sie den folgenden Code, wenn er nützlich ist:
preg_replace("/while


[Math Processing Error]
)/is", "foreach($query as $ \ 1)", $file);
Geben Sie später einfach ein kleines Tool frei und ersetzen Sie es stapelweise.
kann in EditPlus wie folgt ersetzt werden: while


[Math Processing Error]
) wird durch foreach($query as $1)
5 ersetzt. ~
Referenzmaterialien: Freunde, die Fragen zu Memcached haben, können auf die folgenden Artikel verweisen: Memcache-Installation unter Linux: http://www.ccvita.com/index.php/257.html Memcache-Installation unter Windows: http://www.ccvita.com/index.php/258.html Memcache-Basis-Tutorial: http://www.ccvita.com/index.php/259.html
Memcache-Cache-Implementierung von Discuz!: http://www.ccvita.com/index.php/261.html
Das Obige hat die Einführung und Anwendung von Debugging-Methoden in PHP mit Memcache vorgestellt, einschließlich der relevanten Aspekte. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:PHP-Designmuster-SingletonNächster Artikel:PHP-Designmuster-Singleton