Совместно с выделенной библиотекой php - PullRequest
2 голосов
/ 09 октября 2010

У меня есть сервер, который состоит из нескольких Zend Framework приложений.

Я хочу знать, стоит ли загружать Zend Library на сервер и делиться им среди всех приложений вместо загрузкиэто на приложение.

Влияет ли это на скорость, если, например, несколько приложений запрашивают библиотеку одновременно или нет.

Каковы ее плюсы и минусы?

Заранее спасибо.

Ответы [ 3 ]

4 голосов
/ 09 октября 2010

Мой ответ в целом относится к разделяемым библиотекам, поскольку это не должно относиться к библиотеке Zend:

ПРОГРАММЫ совместного использования:

  • Меньше использования дискового пространства
  • Возможно меньшее использование памяти (зависит от многих факторов, включая ОС)
  • Обновите один раз, обновите все (вам не нужно обновлять библиотеку для каждого отдельного приложения

Минусы совместного использования:

  • Если вам нужна определенная версия библиотеки для определенного приложения (например, по причинам совместимости), вы не можете сделать это, предоставив доступ к библиотеке
  • Риск взлома приложений при обновлении до несовместимой версии библиотеки.
3 голосов
/ 09 октября 2010

Как уже отмечали другие, есть свои плюсы и минусы.Большой минус в том, что каждый раз, когда вы собираетесь обновить код своей библиотеки, вам нужно тестировать каждое приложение, а не только то, которое требует обновления прямо сейчас.

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

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

APP1: config.php

<?PHP
define('ZEND_LIB_PATH','/path/to/ZendFramework-1.9/library');
set_include_path(ZEND_LIB_PATH . PATH_SEPERATOR . get_include_path());

APP2: config.php

define('ZEND_LIB_PATH','/path/to/ZendFramework-1.10.1/library');
set_include_path(ZEND_LIB_PATH . PATH_SEPERATOR . get_include_path());

Таким образом, если два приложения используют одну и ту же версию, они могут совместно использовать кэши кодов операций для этой версии, но вы не привязаны к ней.

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ : Iна самом деле этого не делали, так что вы, вероятно, захотите проверить теорию, прежде чем применять ее на практике.

2 голосов
/ 09 октября 2010

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

Опять же, если эти приложения совместно используют код, им определенно следует совместно использовать библиотеки, чтобы избежать еще худших проблем с общим кодом, работающим под разными версиями библиотек на каждом сайте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...