Spec-Zone .ru
спецификации, руководства, описания, API

22.9.10.4. Быстрый запуск и Примеры

Copyright 1997-2012 PHP Documentation Group.

mysqlnd memcache плагин удобен. Этот быстрый запуск будет демонстрационные типичные примеры использования, и обеспечивать практический совет относительно начинания.

Строго рекомендуется считать ссылочные разделы в дополнение к быстрому запуску. Быстрый запуск пытается избежать обсуждать теоретические понятия и ограничения. Вместо этого это соединится со ссылочными разделами. Безопасно начаться с быстрого запуска. Однако, перед использованием плагина в миссии критические среды мы убеждаем Вас считать дополнительно вводную информацию из ссылочных разделов.

22.9.10.4.1. Установка

Copyright 1997-2012 PHP Documentation Group.

Плагин реализуется как расширение PHP. См. также инструкции по установке, чтобы установить это расширение.

Скомпилируйте или сконфигурируйте расширение MySQL PHP (API) (mysqli, PDO_MYSQL, mysql). То расширение должно пользоваться mysqlnd библиотекой как, потому что mysqlnd_memcache является плагином для mysqlnd библиотеки. Для дополнительной информации обратитесь к mysqlnd_memcache инструкциям по установке.

Затем, загрузите это расширение в PHP и активируйте плагин в конфигурационном файле PHP, используя конфигурационную директиву PHP, названную mysqlnd_memcache.enable.

Пример 22.393. Включение плагину (php.ini)

; On Windows the filename is php_mysqnd_memcache.dll; Load the extensionextension=mysqlnd_memcache.so; Enable itmysqlnd_memcache.enable=1

Следуйте инструкциям, данным в MySQL Reference Manual при установке плагинов Memcache для сервера MySQL. Активируйте плагины и сконфигурируйте доступ Memcache для таблиц SQL.

Примеры в этом quickguide предполагают, что следующая таблица существует, и что Memcache конфигурируется с доступом к этому.

Пример 22.394. Таблица SQL используется для Быстрого запуска

CREATE TABLE test(  id CHAR(16),  f1 VARCHAR(255),  f2 VARCHAR(255),  f3 VARCHAR(255),  flags INT NOT NULL,  cas_column INT,  expire_time_column INT,  PRIMARY KEY(id)  ) ENGINE=InnoDB;INSERT INTO test (id, f1, f2, f3) VALUES (1, 'Hello', 'World', '!');INSERT INTO test (id, f1, f2, f3) VALUES (2, 'Lady', 'and', 'the tramp');INSERT INTO innodb_memcache.containers(  name, db_schema, db_table, key_columns, value_columns,   flags, cas_column, expire_time_column, unique_idx_name_on_key)VALUES (  'plugin_test', 'test', 'test', 'id', 'f1,f2,f3',  'flags', 'cas_column', 'expire_time_column', 'PRIMARY KEY');

22.9.10.4.2. Использование

Copyright 1997-2012 PHP Documentation Group.

После соединения соединения MySQL с использованием соединения Memcache mysqnd_memcache_set плагин пытается прозрачно заменить SQL SELECT операторы memcache доступом. С этой целью плагин контролирует все выполняемые SQL-операторы и пытается соответствовать строку оператора против MYSQLND_MEMCACHE_DEFAULT_REGEXP . В случае соответствия mysqlnd memcache плагин проверяет ли SELECT получает доступ только к столбцам отображенной таблицы и WHERE пункт ограничивается единственным ключевым поиском.

В случае таблицы SQL в качестве примера плагин будет использовать интерфейс Memcache сервера MySQL, чтобы выбрать результаты для SQL-запроса как SELECT f1, f2, f3 WHERE id = n.

Пример 22.395. Основной пример.

<?php$mysqli = new mysqli("host", "user", "passwd", "database");$memc = new Memcached();$memc->addServer("host", 11211);mysqlnd_memcache_set($mysqli, $memc);/*   This is a query which queries table test using id as key in the WHERE part   and is accessing fields f1, f2 and f3. Therefore, mysqlnd_memcache   will intercept it and route it via memcache.*/$result = $mysqli->query("SELECT f1, f2, f3 FROM test WHERE id = 1");while ($row = $result->fetch_row()) {    print_r($row);}/*   This is a query which queries table test but using f1 in the WHERE clause.   Therefore, mysqlnd_memcache can't intercept it. This will be executed   using the MySQL protocol*/$mysqli->query("SELECT id FROM test WHERE f1 = 'Lady'");while ($row = $result->fetch_row()) {    print_r($row);}?>    

Вышеупомянутый пример выведет:

array(    [f1] => Hello    [f2] => World    [f3] => !)array(    [id] => 2)