|  | Менеджмент ресурсов это ключевой вопрос, особенно в серверных программах. Одним 
из самых значимых ресурсов является память, и работа с памятью должна 
выполняться предельно внимательно. Менеджмент памяти частично абстрагирован в Zend, 
и вы должны это учитывать по очевидным причинам: при абстрагировании, Zend 
получает полный контроль над всеми участками памяти. Zend способна определять, используется ли блок,
автоматически освобождать неиспользуемые блоки и блоки с 
потерянными ссылками и таким образом предотвращать утечки памяти. Используемые функции перечислены в таблице:
 | Функция | Описание | 
|---|
 | emalloc() | Заменяет malloc(). |  | efree() | Заменяет free(). |  | estrdup() | Заменяет strdup(). |  | estrndup() | Заменяет strndup(). Быстрее, чем
estrdup(), и безопасна в двоичном режиме/binary-safe. Это рекомендуемая функция, когда 
вы знаете длину строки до её дублирования. |  | ecalloc() | Заменяет calloc(). |  | erealloc() | Заменяет realloc(). | 
 emalloc(), estrdup(), estrndup(), ecalloc() и erealloc() выделяют
внутреннюю память; efree() освобождает эти ранее выделенные блоки. Память, обрабатываемая функциями
e*(), считается локальной относительно текущего процесса и разрушается после 
окончания работы скрипта, выполняемого этим процессом. | Предупреждение! | 
|---|
 | Для выделения резидентной памяти, которая сохраняется после окончания работы 
текущего скрипта, вы можете использовать malloc() и free(). Это нужно делать очень осторожно и только в сочетании запросом Zend API;
иначе вы рискуете получить утечки памяти. | 
 Zend также предлагает thread-safe resource manager для улучшения встроенной 
поддержки многопоточных Web-серверов. При этом требуется, чтобы вы выделяли 
локальные структуры для всех ваших глобальных переменных, чтобы дать 
возможность работать конкурирующим потокам.Поскольку режим thread-safe Zend ещё не разработан окончательно, мы не можем 
включить его рассмотрение в эту книгу.
 |  |