APC в PHP Понятие, установка, использование APC


apc_add — Cache a new variable in the data store

apc_add — Cache a new variable in the data store

Описание

Caches a variable in the data store, only if it’s not already stored.

Замечание: Unlike many other mechanisms in PHP, variables stored using apc_add() will persist between requests (until the value is removed from the cache).

Список параметров

Store the variable using this name. key s are cache-unique, so attempting to use apc_add() to store data with a key that already exists will not overwrite the existing data, and will instead return FALSE . (This is the only difference between apc_add() and apc_store() .)

The variable to store

Time To Live; store var in the cache for ttl seconds. After the ttl has passed, the stored variable will be expunged from the cache (on the next request). If no ttl is supplied (or if the ttl is ), the value will persist until it is removed from the cache manually, or otherwise fails to exist in the cache (clear, restart, etc.).

Names in key, variables in value.

Возвращаемые значения

Returns TRUE if something has effectively been added into the cache, FALSE otherwise. Second syntax returns array with error keys.

Примеры

Пример #1 A apc_add() example

Результат выполнения данного примера:


Смотрите также

  • apc_store() — Cache a variable in the data store
  • apc_fetch() — Fetch a stored variable from the cache
  • apc_delete() — Removes a stored variable from the cache

Блог простого админа

Советы, решения, конфиги, патчи, скрипты, утилиты для системного администратора Linux/FreeBSD

четверг, 19 мая 2011 г.

Использование APC для ускорения выполнения PHP скриптов

APC (Alternative PHP Cache) как и другие подобные продукты работает за счет кэширования скомпилированного байт-кода. Без акселератора процесс выполнения скрипта состоит из четырех этапов:

  • открытие файла
  • компиляция в байт код
  • выполнение байт-кода
  • отдача результата выполнения

Один из самых ресурсозатратных — это компиляция.

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

Конфигурирование
Добавим следующие строки в php.ini:

extension=apc.so
apc.enabled=1
apc.shm_size=128M
apc.ttl=7200
apc.user_ttl=7200
apc.enable_cli=1

Комментариев нет:

Отправить комментарий

Примечание. Отправлять комментарии могут только участники этого блога.


Ускорение Apache/PHP с помощью APC

Andrey

пишу код за еду

Кэширование — накопление данных в доступном хранилище, с целью их быстрого извлечения по мере надобности. Кэширование ускоряет процесса обработки информации.
APC (Альтернативный PHP кэш) это оптимизированный PHP кэш. Он хранит PHP страницы в оперативной памяти (RAM) и сокращает активность использования жесткого диска. Это делает реальную разницу в производительности HLX:CE, и вы можете достичь 50% увеличения пропускной способности системы и ваш процессор будет занят на 50% меньше.

Это руководство предназначено для установки APC на Windows и Linux серверах. Инструкция была протестирована на Windows XP x64 (XAMPP) и Ubuntu 8.04 LTS x64 сервер, также должны быть подходящими любые другие современные версии Windows и Linux в качестве сервера.

Сначала перед установкой APC, давайте узнаем информацию об установленном у нас PHP5. Для этого мы создадим файл info.php в корневой директории веб-папки сервера C:\xampp\htdocs в windows или /var/www в linux, или там где находиться ваша веб-папка, файл должен содержать следующие строки:

и вы должны увидеть что PHP 5.2.4 установлен.

вы должны посмотреть что APC нигде не упоминается на этой странице.

Установка APC Windows
Сохраните в папке расширений PHP, которая C:\XAMPP\PHP\Ext по умолчанию. Примечание: Убедитесь, что вы выбрали правильное расширение для вашей версии PHP.

Включить расширение APC в C:\XAMPP\PHP\php.ini файл, отредактировав файл php.ini и добавив следующие строки в раздел расширений:

Скачайте корректную бинарную версию под windows для версии PHP которая у вас установлена с

. Сохраните файл в папку раширений PHP extensions, которая в XAMPP по умолчанию c:\xampp\php\ext. Примечание: убедитесь, что вы выбрали правильное расширение для вашей версии PHP.

Илон Маск рекомендует:  Резиновый трёхколоночный макет

Как установить акселлератор APC на CentOS?

Более или менее крупные проекты содержат объемный PHP код, выполнение которого занимает заметное время. При этом одни и те же алгоритмы выполняются множественно, что с точки зрения использования аппаратных ресурсов выглядит не совсем рационально. Для этих целей были придуманы так называемые акселераторы PHP – это специальное расширение, которое служит для увеличения производительности интерпретатора PHP, при обработке скриптов, за счет кэширования их скомпилированного байт-кода.


Существуют множество расширений, выполняющие роль акселератора PHP, в данной заметке мы попробуем установить одно из популярных расширений — APC, на Linux CentOS с веб-сервером Apache.

APC (Alternative PHP Cache) – бесплатное расширение с открытым исходным кодом, созданное для кэширования и оптимизации работы исходных кодов PHP.
Для установки мы воспользуемся репозиторием Remi:

После успешной инсталляции, необходимо задать параметры для акселератора, в файле /etc/php.d/apc.ini. Откроем конфигурационный файл в редакторе vi:

Выставляем следующие параметры:

Данные параметры приведены для примера. Обратите внимание на то, что APC нужно конфигурировать, опираясь на аппаратные ресурсы своего сервера. Неправильная конфигурация может привести к нестабильной работе APC.
Можно мониторить состояние кэша APC воспользовавшись утилитой apc.php, которая прилагается к дистрибутиву. Его достаточно скачать и закинуть в публичную директорию сервера.

Когда имеет смысл ставить акселератор APC?
Если сервер испытывает значительные нагрузки, одной из причин которых является исполнение php-кода скриптов, то в этом случае есть смысл задуматься об инсталляции акселератора на свой сервер.

APC в PHP: Понятие, установка, использование APC

Поведение этих функций зависит от установок в php.ini .

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

При настройке APCu необходимо определиться, сколько пямяти предоставить в распоряжение APCu. Директива ini-файла, ответственная за эту настройку — apc.shm_size. Внимательно прочитайте нижеследующий раздел.

Как только сервер запущен, скрипт apc.php, поставляемый с этим модулем, должен быть скопирован в «docroot» и права на него должны позволять запустить его через браузер. Этот скрипт предоставляет детальную информацию по работе APCu. Если в PHP поддерживается GD, то этот скрипт также будет показывать полезные графики. Конечно же первое, что будет интересно, это то, кеширует ли APC что-нибудь. Если APC работает, то значение Cache full count (слева) будет показывать, сколько раз кеш был полностью заполнен и был вынужден принудительно удалить записи, к которым не обращались последние apc.ttl секунд. Чем меньше это число — тем лучше сконфигурирован кеш. Если это число постоянно растет, значит APCu приходится постоянно очищать старые записи и значит теряется весь смысл кеширования. Самый лучший способ уменьшить это число — это добавить APCu памяти. Если сделать этого нельзя, то надо перенастроить apc.filters, чтобы ограничить набор кешируемых скриптов.

Если APCu собран с поддержкой mmap (Memory Mapping), он будет использовать всего один сегмент памяти, если же наоборот, APC собран с поддержкой SHM (SysV Shared Memory), он будет использовать несколько сегментов. MMAP не имеет максимального ограничения, в отличие от SHM, который ограничивается /proc/sys/kernel/shmmax. Обычно рекомендуется использовать MMAP, потому что он гораздо быстрее выделяет память при перезагрузке веб-сервера, что сказывается на скорости запуска сервера.

Опции конфигурации APCu

Имя По умолчанию Место изменения Список изменений
apc.enabled «1» PHP_INI_SYSTEM
apc.shm_segments «1» PHP_INI_SYSTEM
apc.shm_size «32M» PHP_INI_SYSTEM
apc.entries_hint «4096» PHP_INI_SYSTEM
apc.ttl «0» PHP_INI_SYSTEM
apc.gc_ttl «3600» PHP_INI_SYSTEM
apc.mmap_file_mask NULL PHP_INI_SYSTEM
apc.slam_defense «1» PHP_INI_SYSTEM
apc.enable_cli «0» PHP_INI_SYSTEM
apc.use_request_time «1» PHP_INI_ALL
apc.serializer «default» PHP_INI_SYSTEM
apc.coredump_unmap «0» PHP_INI_SYSTEM
apc.preload_path NULL PHP_INI_SYSTEM

Для подробного описания констант PHP_INI_*, обратитесь к разделу Где могут быть установлены параметры конфигурации.

Краткое разъяснение конфигурационных директив.


Если установить apc.enabled равным 0, то APCu не будет запущен. Это полезно, когда APCu статически включен в PHP и нет других вариантов, для запрещения его использования. Если APC собран как DSO, можно просто закомментировать строку extension в php.ini.

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

Размер сегмента разделяемой памяти, заданный в короткой нотации (смотрите этот FAQ). По умолчанию, некоторые системы (включая большинство вариантов BSD) ограничивают это значение крайне малым значением.

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

Количество секунд, которые запись может лежать в кеше без обращения к ней, прежде чем будет разрешено ее заменить на другую. Установка этого параметра равного нулю может привести к тому, что все место будет забито и новые записи не смогут попасть в кеш. В этом случае, если параметр равен 0, кеш будет полностью очищен. Если же ttl будет больше нуля, то APCu постарается очистить устаревшие записи.

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

Если собран с поддержкой MMAP, с помощью опции —enable-mmap, этот параметр должен содержать файловую маску типа mktemp-style для передачи в модуль MMAP, чтобы определить, будет ли MMAP использовать файловую систему или разделяемую память. Для файловой системы задайте опцию как /tmp/apc.XXXXXX (ровно 6 X). Для использования shm_open/mmap в стиле POSIX, добавьте .shm в любом месте маски, например /apc.shm.XXXXXX Вы также можете установить его как /dev/zero для использования интерфейса ядра /dev/zero для анонимной памяти mmap. Если не задано, то будет принудительно использоваться анонимный mmap.

На очень загруженных серверах, когда вы запускаете веб-сервер, сразу множество процессов будут пытаться закешировать один и тот же файл одновременно. Этой опцией задается вероятность, в процентах, того, что попытка одного конкретного процесса закешировать данные будет отклонена. Например, если apc.slam_defense установить равной 75, то это означает, что вероятность закешировать файл, которого в кеше нет, будет равна 25% и вероятность того, что в кешировании будет отказано равна 75%. Для запрета данного функционала установите этот параметр равным .

Больше для тестирования и отладки. Эта настройка включает APCu для CLI версии PHP. При обычной работе, запускать APCu, который будет создавать, наполнять и уничтожать кеш при каждом запуске сценария в консоли, будет далеко не лучшей идеей. Но в целях тестирования и отладки, можно легко включить APCu для CLI.

Указывает APC использовать сторонний сериализатор.

Разрешает APC перехватывать сигналы, такие как SIGSEGV, который записывает coredump, когда подан. Когда эти сигналы будут получены, APC попытается освободить всю разделяемую память, чтобы не включать ее в coredump. Эта настройка может увеличить стабильность системы, когда критический сигнал был получен, а APC сконфигурирован на использование большого объема памяти.

Эта возможность потенциально опасна. Освобождение сегментов разделяемой памяти при получении критического сигнала может привести к непредсказуемому поведению.

Хотя некоторые ядра предоставляют возможность игнорировать некоторые сегменты разделяемой памяти при записи core-файла, эти реализации могут также игнорировать важные сегменты памяти, такие как Apache scoreboard.

Опционально. Задает путь, который используется APC для загрузки кешированных данных во время запуска.


Использовать время старта запроса SAPI для TTL .

В чем проблема при установке PHP APC (mac)?

Привет. Столкнулся с потребностью поднять на MAC’е APC для PHP, но увы. Вчера прокопался пол дня, вроде бы все ок, но выдает одни баги при @make test@

И так что я делал:
1. открываем терминал и на совсем чистой, вчера установленной системе начинаем писать:

PCRE есть, идем дальше ->

И потом Autoconf качаем:

А вот и корень долбанной проблемы — APC:

После делаю от имени APC @make test@ -> 54 бага из 56 пунктов. TEST FAILED.

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

Кэширование PHP с помощью APC. Настройки APC

Published by Roman Matovsky on September 19, 2015 September 19, 2015

Меня неоднократно спрашивали по поводу наиболее оптимальной настройки кэшера APC (Alternative PHP Cache) на сервере. Остальными я не пользовался, так как они либо платные, либо не выполняют нужных мне функций. Например, ранее популярный акселератор eAccelerator более не поддерживает пользовательские функции кэширования.

Популярность APC понятна – открытость, бесплатность и стабильность. APC является расширением PECL, но не поставляется вместе с PHP, поэтому его надо будет устанавливать отдельно. По информации которой я лично владею из интернета – APC будет включен в ядро PHP 6. А пока увы, придётся устанавливать самому.

Не забудьте скачать моё приложение на iPhone


Устанавливается APC очень просто. В Ubuntu Server это делается так:
sudo apt-get install php-apc

И перезапускаем Apache:
sudo /etc/init.d/apache2 restart

О том как установка происходит в других UNIX-подобных системах вы можете почитать на сайте PHP.

Ниже привожу наиболее оптимальные, на мой взгляд, настройки APC:

extension=»apc.so»
apc.enabled=1
apc.shm_segments=1
apc.shm_size=1G
apc.ttl=7200
apc.user_ttl=7200
apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.max_file_size=16M

Можете просто скопировать и вставить в файл apc.ini у себя на сервере.

В UNIX-подобных системах (например, в Ubuntu Server) файл находится по адресу:

Настройка PHP + APC

Здравствуйте!! У меня проблема. Я установил на свой сервер PHP и APC PHPINFO. И хотел сделать прогресс-бар загрузки файлов (собственно для этого APC и нужна), а в результате во всех тестовых примерах мне вместо инфы о состоянии файлов выдается пустая строка (false).

Настраивал в PHP.ini следующее:

Работает исправно, выдает 12345, из чего делаю вывод, что APC установил и настроил корректно. Помогите, кто сталкивался, плз!

2 ответа 2

Во-первых, Flash уже не есть правильно для прогресса загрузки, как и Java-апплет на стороне клиента. Рекоммендую поставить подходящее Вам PECL-расширение для этого, плюс — имейте в виду — прокси посередине между клиентом и сервером могут давать подобную проблему. Как и — в частности — Nginx на стороне сервера. Пишите уточнение вопроса и задачи — помогу с удовольствием.

А с чего вы взяли что для прогресса загрузки файлов нужно апц ? Видимо его требует какая-то специфическая библиотека ? Если так ? Почему вы не указали название этой библиотеки ?


Сейчас прогресс загрузки делается либо через ajax, либо (кросплатформенно через flash).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками php или задайте свой вопрос.

Похожие

Подписаться на ленту

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2020 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2020.11.11.35402

Как APC использует память?

APC использует много памяти. На моем сервере,

30 WordPress и 6 сайтов Magento, он использует более 1GB которым больше, чем размер PHP файлов.

Я думал, что опкод будет меньше, чем PHP файлов. Как скомпилированный JAVA по сравнению с источником.

Так, например, index.php из Magento является 2571B на диске, и он использует 16560B в APC.

Я не использовать любой кэш пользователя.

Кэша каждый и каждый файл PHP по пути, что это на. Так что это 30 х каждый WordPress PHP файл или 6 х каждый Magento PHP файл. Это не говоря уже о каких-либо библиотек PEAR или других вы могли бы использовать.

Кроме того, что ваши настройки в вашем /etc/php.d/apc.ini или файл php.ini для памяти, чтобы позволить APC?


Умножьте сегменты раз размер и то, как большой, как будет расти APC. Он сразу же принимает этот блок памяти для использования, даже если вы на самом деле не использовать его. Проверьте файл apc.php, чтобы увидеть фактическое использование.

Глядя на WordPress недавнего установку WordPress, я вижу, по крайней мере, 8M просто PHP файлов. Так что если у вас есть 30 сайтов с их собственной полной установки WordPress и использования APC, что в одиночку (без каких-либо плагинов) будет огромное количество материала в кэше опкод.

Установка APC в Windows

Как установить APC в Windows? Я использую PHP 5.3, Windows 7 x64.

Установка расширения с помощью команды pecl означает:

  • загрузка исходных текстов
  • компиляция их

И, вообще говоря, на машине Windows нет того, что требуется для компиляции программного обеспечения, такого как PHP и/или расширения PHP.

Лучшее/более простое решение, в вашем случае, вероятно, должно было бы найти предварительно скомпилированный .dll расширения, соответствующий вашей системе и вашей версии PHP.

С некоторой удачей, возможно, одна из версий, представленных на http://downloads.php.net/pierre/, может быть в порядке?
(Это то, что действует как замена старого pecl4win, до тех пор, пока расширения для окон не будут доступны на windows.php.net)

Для получения дополнительной информации о том, какую версию вы должны использовать, посмотрите какую версию выбрать? в разделе слева, bar http://windows.php.net/

Не важно, используете ли вы 32-разрядную или 64-разрядную версию Windows. Важно то, что вы установили версию Apache (webserver) (32/64). Поскольку множество расширений PHP (например, APC) недоступны для 64-битных систем, наиболее распространенная настройка выглядит следующим образом:

Операционная система 32 или 64-разрядная (не очень важная). 32-разрядная версия Apache будет легко запускаться в Windows 64-bit. Разница в том, что для 32-разрядного apache вы ДОЛЖНЫ установить 32-разрядный PHP файл. После установки 64-битного PHP вам может быть сложно установить некоторые расширения — почти нет расширений для 64-битной платформы PHP.

поэтому ваш веб-сервер должен быть 32-разрядным, если вам нужны специальные расширения, такие как APC, Imagick и т.д. Также вам нужно знать, является ли ваш apache потокобезопасным (TS) или нет потокобезопасным (NTS) и был ли он скомпилирован в Visual Studio 6 (VC6) или в редакторе Visual Studio 2008 (VC9). Вы легко найдете всю эту информацию из функции phpinfo().

Илон Маск рекомендует:  Цикл for next или как работать с большим числом файлов
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL