,

Memcached vs wp transient vs wp postmeta api

W tym wpisie porównamy w skrócie trzy tytułowe rozwiązania – dzięki temu będziecie mogli dobrać odpowiednie rozwiązanie do problemu.

Memcached

  • memcached jest zazwyczaj zainstalowany na serwerze (przez hostingodawcę), nie wymaga WP – związany jest z samym PHPem
  • memcache memcached – używajcie memcached bo jest nowsze i ogólnie to rozwinięcie/kontynuacja wersji bez „d”
  • memcached nie zapewnia że dana zmienna będzie dostępna przez cały „expiration time” – jeśli braknie miejsca na nowe zmienne (klucze) to usuwane są najpierw przeterminowane, jeśli takich nie ma to usuwany jest ten który nie był najdłużej używany
  • jeśli „expiration time” jest większy niż 30 dni (w sekundach) wtedy podana wartość uznawana jest za UNIX time i o tym czasie będzie „expired”
  • uruchamianie memcached na localu (Mac, terminal):
    • memcached -d
  • example.php:
$key = 'siemka';
$value = 'uszanowanko';
$expiration = 5; // 5 seconds max lifetime

$mc = new Memcached();
$mc->addServer('127.0.0.1', 11211);

$val = $mc->get($key);
var_dump($val); // false or $value if not after expiration time

if (empty($val)) {
 $mc->set($key, $value, $expiration);
}

$val = $mc->get($key);
var_dump($val); // $valueCode language: PHP (php)

Transienty

  • transient NIE gwarantuje że przez X czasu będzie dostępny tylko, że po X czasu będzie już usunięty ale może być usunięty wcześniej (np. przy aktualizacjach)
  • example.php:
require "wp-load.php";

$transient = 'test';
$value = 'siemka';
$expiration = 5; // 5 seconds max lifetime;

$val = get_transient($transient);
var_dump($val); //false (no transient) or $value if script was run less than $expiration seconds ago
var_dump(set_transient($transient, $value, $expiration));
$val = get_transient($transient);
var_dump($val); // $value
var_dump(delete_transient($transient));
$val = get_transient($transient); //false - no trasient
var_dump($val);Code language: PHP (php)

Postmeta

  • sami musimy zarządzać usuwaniem ale za to mamy (własną) gwarancję że dane tam będą tak długo
    jak chcemy
  • musimy “teoretycznie” dodawać meta dla jakiegoś id z drugiej strony ten id nie musi istnieć ?
  • example.php:
require "wp-load.php";

$field_name = 'test';
$post_id = 1;
$value = 'siemka';

$val = get_post_meta($post_id , $field_name, false);
var_dump($val);
$update = update_post_meta($post_id , $field_name, $value);
var_dump($update);
$val = get_post_meta($post_id , $field_name, false);
var_dump($val);
var_dump(delete_post_meta($post_id , $field_name));
$val = get_post_meta($post_id , $field_name, false);
var_dump($val);Code language: PHP (php)

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

Nasza pasja do technologii nie kończy się na dostarczaniu wnikliwych treści poprzez ten blog. Zapraszamy po więcej tajników specjalistycznej wiedzy dla entuzjastów takich jak Ty.

Tematy

animacje animate Attribute inheritance Block Theme Branża IT bug Code Comments CSS CSS Flexbox developer tools Doc Blocks dostępność www Edge Edge computing Editor Flex Gap FSE Full Site Editing GIT GIT Submodules Gutenberg HTTP HTTP/2 HTTP/3 IT JS Memcached Optimization plik SVG Praca praca w IT Rozmowy o WordPress strony www SVG Text-overflow theme.json v-model Vue.js wcag web accessibility Web development webkit line clamp Wordpress wp postmeta api wp transient