1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-23 23:32:16 +01:00
Files
archived-doc-ru/reference/memcached/callbacks.xml
2024-05-13 00:08:12 +03:00

124 lines
3.9 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 80872147aa52367137bd3d168412f70cbe2ddf9c Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<chapter xml:id="memcached.callbacks" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Callback-функции</title>
<section xml:id="memcached.callbacks.result">
<title>Callback-функции для результирующего набора</title>
<para>
Результирующие <type>callable</type>-объекты вызываются
методами <methodname>Memcached::getDelayed</methodname>
и <methodname>Memcached::getDelayedBykey</methodname> для каждого
элемента результирующего набора. Callback-функции передаётся
объект Memcached и массив с информацией об элементе. Callback-функция
не должна ничего возвращать.
</para>
<example>
<title>Пример сallback-функции для результирующего набора</title>
<programlisting role="php">
<![CDATA[
<?php
$m = new Memcached();
$m->addServer('localhost', 11211);
$items = array(
'key1' => 'value1',
'key2' => 'value2',
'key3' => 'value3'
);
$m->setMulti($items);
$m->getDelayed(array('key1', 'key3'), true, 'result_cb');
function result_cb($memc, $item)
{
var_dump($item);
}
?>
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
array(3) {
["key"]=>
string(4) "key1"
["value"]=>
string(6) "value1"
["cas"]=>
float(49)
}
array(3) {
["key"]=>
string(4) "key3"
["value"]=>
string(6) "value3"
["cas"]=>
float(50)
}
]]>
</screen>
</example>
</section>
<section xml:id="memcached.callbacks.read-through">
<title>Callback-функции кеша со сквозным чтением</title>
<para>
Callback-функции кеша со сквозным чтением вызываются, когда элемент невозможно получить с сервера.
В callback-функцию передаётся объект Memcached, запрошенный ключ
и переменная значения по ссылке. Callback-функция отвечает за установку значения и возврат значения
&true; или &false;. Если callback-функция вернула &true;, Memcached сохранит заполненное значение
на сервере и вернёт его оригинальной функции. Только методы <methodname>Memcached::get</methodname>
и <methodname>Memcached::getByKey</methodname> поддерживают эти callback-функции,
поскольку протокол memcache не даёт информации о том, какие ключи не были найдены в пакетном запросе.
</para>
<example>
<title>Пример callback-функции сквозного чтения</title>
<programlisting role="php">
<![CDATA[
<?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;
}
?>
]]>
</programlisting>
</example>
</section>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->