Вам может понадобиться кофе или что-то еще, прежде чем вы прочитаете это:
Вы хотите использовать Memcache::addServer
, когда вам нужно добавить больше серверов Memcached. Например, если у вас был действительно загруженный веб-сайт или веб-приложение ... вы, вероятно, захотите иметь более одного сервера Memcached под управлением 1 . Memcache::connect
используется, когда вы хотите установить соединение с одним из ваших серверов Memcached. Кроме того, согласно документам Memcache::addServer
, другое различие между Memcache::addServer
и Memcache::connect
заключается в том, что при Memcache::addServer
соединение не устанавливается до тех пор, пока оно действительно не потребуется 2 .
Если Memcached не хватает ОЗУ, он отбрасывает самые старые значения 3 .
Memcache::getExtendedStats
используется для проверки информации о вашем сервере Memcached. Например, если вам нужно выяснить, сколько времени сервер работал (время безотказной работы), сколько подключений к серверу или общее использование сервера 4 , это отличный инструмент.
Вероятно, самый простой способ проверить, существует ли уже соединение с Memcached, - это проверить переменную соединения $ memcache, чтобы узнать, возвращает ли она TRUE
5 . Если вам нужно постоянное соединение (которое продолжает работать даже после завершения скрипта), есть возможность использовать Memcache::pconnect
6 .
Если вы хотите, чтобы два сервера Memcached работали ... и ваш первый сервер уже был вашим локальным хостом, вам, скорее всего, понадобится отдельный отдельный сервер для второго 7 .
По крайней мере, еще одним преимуществом наличия более одного сервера Memcached является идея о том, что всякий раз, когда вы диверсифицируете свои данные (или серверы), даже когда один сервер выходит из строя ... у вас все равно остается много других серверов для собрать кусочки. Memcached выглядит 8 так, как будто он распределяется по множеству серверов, которые вы используете ... поэтому, если сервер выходит из строя, вы все равно теряете эту часть кэша. Но у вас все еще есть другие запущенные серверы, чтобы помочь продолжать работу.
В общем, неплохо бы поддерживать практически любое программное обеспечение в актуальном состоянии. Похоже, Memcached по-прежнему является очень активным проектом 9 , поэтому вы можете обновить его, когда сможете. Но сущность Memcached, похоже, не сильно изменилась по сравнению с предыдущими версиями ... поэтому обновление может быть не столь критичным по сравнению с чем-то вроде программного обеспечения операционной системы.
Похоже, способ, которым Memcached выделяет память для TCP-подключений (когда вы делаете вызов на ваш сервер Memcached через Memcache::connect
,), в итоге стоит вашей памяти 10 . Если вы уверены, что вам не понадобится это соединение на некоторых ваших страницах, вы можете не звонить по этому соединению.
Трудно сказать, какой тип ошибок может появиться в вашем коде. Но с чем-то вроде Memcached вы можете обнаружить ошибки, возникающие при нехватке памяти 11 .
Как и ответ на восьмой вопрос, я все равно рекомендовал бы пытаться назвать это $memcache->connect()
только в тех областях, где это абсолютно необходимо. Возможно, вы используете Memcached во многих ваших приложениях или скриптах; но, вероятно, все еще будут места, где вам это не понадобится.
Что касается идеи вашего кода для вопроса 10, то, насколько это возможно, зависит от вас. В общем, хорошо, когда это возможно, стараться избегать глобальных переменных 12 . Вместо этого, как об этом говорится в статье (12) в сноске, проще просто использовать одноэлементный вызов класса для соединения ... и затем просто вызывать его каждый раз, когда вы хотите установить соединение.
Ух ты, мои глаза устали. Надеюсь, это поможет, чувак ...!
1 http://en.wikipedia.org/wiki/Memcached (см. Раздел «Архитектура»)
2 http://www.php.net/manual/en/memcache.addserver.php
3 http://en.wikipedia.org/wiki/Memcached (см. Раздел «Архитектура»)
4 http://www.php.net/manual/en/memcache.getextendedstats.php
5 http://www.php.net/manual/en/memcache.connect.php (см. Раздел «Возвращаемые значения»)
6 http://www.php.net/manual/en/memcache.pconnect.php
7 http://www.php.net/manual/en/memcache.addserver.php#101194
8 Преимущества нескольких экземпляров memcached
9 http://code.google.com/p/memcached/
10 http://www.facebook.com/note.php?note_id=39391378919 (с точки зрения Facebook)
11 http://groups.google.com/group/memcached/browse_thread/thread/9ce1e2691efb283b
12 Как избежать использования глобальных объектов PHP?