Мемкэш жжот просто нипадецки. Протестируем один сценарий для трёх расширений PHP:
- Старенький php_memcache.dll на моей локалке под Windows
- Тот же php_memcache только под FreeBSD
- Новое расширение php_memcached
$memcached = false; // php_memcached or php_memcache if ($memcached) { $c = new Memcached(); } else { $c = new Memcache(); } $c->addServer('localhost', 11211); function check($label, $value) { global $c; echo $label.': '; $c->set('x', $value); var_dump($c->get('x')); echo '<hr />'; } if (!$memcached) { echo 'Version: '.$c->getversion().'<hr />'; } check('false', false); check ('true', true); check('null', null); check('empty string', ''); check('string "0"', '0'); check('0', 0); check('1', 1); check('array', array(1, 2, 3)); $c->delete('x'); echo 'delete: '; var_dump($c->get('x')); if ($memcached) { echo '<br />resultCode = '.$c->getResultCode(); } |
Результаты:
Домашний memcache | Серверный memcache | php_memcached | |
version: | 1.2.1 | 1.2.8 | нет метода |
false: | "" | FALSE | NULL |
true: | "1" | TRUE | TRUE |
null: | NULL | NULL | NULL |
Пустая строка: | "" | "" | NULL |
Строка "0": | Строка "0" | Строка "0" | Строка "0" |
Число 0: | Строка "0" | Число 0 | Число 0 |
Число 1: | Строка "1" | Число 1 | Число 1 |
Массив: | нормально | нормально | нормально |
Несуществующий ключ: |
FALSE | FALSE | FALSE code=RES_NOTFOUND |
Массивы сериализуются и с ними проблем нет. А вот со скалярными величинами всё не так просто.
Мой старый php_memcache все скалярные величины приводит к строке. Не слишком приятно, но удволетворительно и понятно.
Из общей картины несколько выбивается NULL — он сохраняет свой тип.
Более новая версия php_memcache сохраняет типы правильно. Но в ней теперь нельзя точно узнать, существует ли ключ или же с ним связано значение FALSE.
А вот php_memcached начинает отжигать. В нём наконец появилась возможность проверить существует ли ключ, если get вернула FALSE (с помощью getResultCode()). Но в ней теперь нет необходимости: FALSE теперь возвращает NULL. Более того, NULL так же возвращает и пустая строка.
Вот и разбери их теперь.
Да… Наплодили расширений :)
adw0rd, 8.06.2009, 13:32
Слушай, не мучай народ… поставь подсветку синтаксиса, например http://kpumuk.info/projects/wordpress-plugins/codecolorer/ или там свою напиши, ты это любишь :)
http://adw0rd.ru/2009/blog-refactoring/ вот посмотри плагины, может что понравится!
adw0rd, 9.06.2009, 3:46
Тебя что-то опять на премодерацию отправило
vasa_c, 9.06.2009, 11:55
Это из-за ссылок, если 2 и более..
adw0rd, 9.06.2009, 13:56