Or just set the value within the callback with your own custom expiration time and return false. I think it's cleaner.
Callback-ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠ΅ΡΠ° ΡΠΎ ΡΠΊΠ²ΠΎΠ·Π½ΡΠΌ ΡΡΠ΅Π½ΠΈΠ΅ΠΌ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°.
Π callback-ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Memcached, Π·Π°ΠΏΡΠΎΡΠ΅Π½Π½ΡΠΉ ΠΊΠ»ΡΡ
ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅. Callback-ΡΡΠ½ΠΊΡΠΈΡ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
true ΠΈΠ»ΠΈ false. ΠΡΠ»ΠΈ callback-ΡΡΠ½ΠΊΡΠΈΡ Π²Π΅ΡΠ½ΡΠ»Π° true, Memcached ΡΠΎΡ
ΡΠ°Π½ΠΈΡ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΈ Π²Π΅ΡΠ½ΡΡ Π΅Π³ΠΎ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. Π’ΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΠΎΠ΄Ρ Memcached::get()
ΠΈ Memcached::getByKey() ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΡΠΈ callback-ΡΡΠ½ΠΊΡΠΈΠΈ,
ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» memcache Π½Π΅ Π΄Π°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠ»ΡΡΠΈ Π½Π΅ Π±ΡΠ»ΠΈ Π½Π°ΠΉΠ΄Π΅Π½Ρ Π² ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΎΠΌ Π·Π°ΠΏΡΠΎΡΠ΅.
ΠΡΠΈΠΌΠ΅Ρ #1 ΠΡΠΈΠΌΠ΅Ρ callback-ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΊΠ²ΠΎΠ·Π½ΠΎΠ³ΠΎ ΡΡΠ΅Π½ΠΈΡ
<?php
$m = new Memcached();
$m->addServer('localhost', 11211);
$profile_info = $m->get('user:'.$user_id, 'user_info_cb');
function user_info_cb($memc, $key, &$value)
{
$user_id = substr($key, 5);
/* ΠΡΠ΅ΠΌ ΡΡΠ΅Π±ΡΠ΅ΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΠ */
/* ... */
$value = $profile_info;
return true;
}
?>Or just set the value within the callback with your own custom expiration time and return false. I think it's cleaner.This isn't specified anywhere, so I had a gander at the source...
The expiry on read-through cache set values is set to 0, or forever. This means if you want your key to implicitly expire, don't use the callback methods, instead check for boolean false as a return and manually set the value, at least for now.