2009-08-19 5 views
1

Ich studiere High-Performance-Codierung für Websites in PHP, und diese Idee kam mir in den Sinn:Ist es möglich, eine Variable im Speicher (RAM) in PHP zu behalten?

Wir wissen, dass der Zugriff auf eine Datenbank eine erhebliche Menge an CPU-Auslastung verwendet, so dass wir solche Daten zwischenspeichern und speichern die Festplatte. Aber ich frage mich, kann es nicht Ruhe im RAM des Servers, so kann ich darauf zugreifen noch mehr schneller?

+1

Denken Sie daran, dass Betriebssysteme die Dateien im RAM auch für Sie zwischenspeichern. – leeeroy

Antwort

1

PHP kommt normalerweise mit APC als Bytecode Cache. Sie können es auch als lokalen Cache verwenden. Wenn Sie etwas in einer verteilten/gruppierten Umgebung benötigen, dann ist memcached (plus möglicherweise beanstalkd) der richtige Weg.

0

Mit XCache, eaccelerator, apc und memcache können Sie Elemente in semi-persistenten Speicher speichern (Sie wissen nicht unbedingt, wann ein Element in den meisten Fällen abläuft). Es ist nicht dasselbe wie eine Datenbank, eher wie eine Schlüssel/Wert-Liste. Der Nachteil ist, dass es eine Bibliothek von Drittanbietern benötigt, so dass Sie abhängig von Ihrer Umgebung möglicherweise etwas eingeschränkt sind.

Ich denke, Sie können den gleichen Effekt mit Shared Memory (über Shmop_ php-Funktionen) bekommen. Aber ich habe sie nie benutzt oder weiß nicht, ob sie in der Bibliothek von php enthalten sind, damit jemand mich freihauen oder diese Erwähnung löschen kann.

0

Wenn Ihr Server ist ANY gut, dann wird es schon tun. Aber natürlich kann es sein, dass Ihr Server auch ein paar tausend andere Aufgaben außer Ihrer eigenen bedient, was bedeutet, dass Sie den Cache dieses Servers nicht für sich allein haben.

Und wenn da wirklich ein paar tausend andere neben dir bedient werden, dann steigt die Wahrscheinlichkeit, dass es unter diesen Tausenden von anderen mindestens einen Verrückten gibt, der etwas tut, was er eigentlich nicht tun sollte dass der Server nicht programmiert wurde, um zu erkennen, nicht programmiert wurde zu stoppen, sondern nur programmiert wurde, um das Beste daraus zu machen, auf Kosten der Verfügbarkeit von Ressourcen für die x999 "verantwortlichen" Benutzer.