,

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. Z nieukrywaną radością ogłaszamy uruchomienie naszej platformy, która oferuje szereg kursów technologicznych, specjalnie dostosowanych do entuzjastów takich jak Ty.

Tematy

agencja interaktywna animacje animate Block Theme Branża IT bug CSS dostępność www Editor edytor blokowy Flex Gap FSE Full Site Editing GIT GIT Submodules Gutenberg HTTP/2 HTTP/3 IT JS klient Memcached Optimization plik SVG Praca praca w IT Rozmowy o WordPress strona www strony www SVG szkolenia WordPress Text-overflow theme.json tworzenie stron www wcag web accessibility Web development webkit line clamp Wordpress Workflow wp postmeta api wp transient Własna firma zarządzanie projektami zlecenie