В этой статье я расскажу как ускорить время ответа сервера в 20-40 раз.
Для начала необходимо установить PHP 7.2 и добавить в него расширения OPcache и APCu
Я использую Docker.
RUN touch /usr/local/etc/php/conf.d/custom.ini \
&& echo "memory_limit = 512M;" >> /usr/local/etc/php/conf.d/custom.ini \
&& echo "realpath_cache_size = 16M;" >> /usr/local/etc/php/conf.d/custom.ini \
&& echo "realpath_cache_ttl = 7200;" >> /usr/local/etc/php/conf.d/custom.ini
RUN touch /usr/local/etc/php/conf.d/opcache.ini \
&& echo "opcache.enable=1;" >> /usr/local/etc/php/conf.d/opcache.ini \
&& echo "opcache.revalidate_freq=0;" >> /usr/local/etc/php/conf.d/opcache.ini \
&& echo "opcache.validate_timestamps=0;" >> /usr/local/etc/php/conf.d/opcache.ini \
&& echo "opcache.max_accelerated_files=300000;" >> /usr/local/etc/php/conf.d/opcache.ini \
&& echo "opcache.memory_consumption=512;" >> /usr/local/etc/php/conf.d/opcache.ini \
&& echo "opcache.max_wasted_percentage=10;" >> /usr/local/etc/php/conf.d/opcache.ini \
&& echo "opcache.interned_strings_buffer=64;" >> /usr/local/etc/php/conf.d/opcache.ini \
&& echo "opcache.fast_shutdown=1;" >> /usr/local/etc/php/conf.d/opcache.ini
RUN touch /usr/local/etc/php/conf.d/apcu.ini \
&& echo "apc.enable=1;" >> /usr/local/etc/php/conf.d/apcu.ini \
&& echo "apc.enable_cli=0;" >> /usr/local/etc/php/conf.d/apcu.ini \
&& echo "apc.shm_size=256M;" >> /usr/local/etc/php/conf.d/apcu.ini \
&& echo "apc.mmap_file_mask=/tmp/apc.XXXXXX;" >> /usr/local/etc/php/conf.d/apcu.ini
Далее в конфиге для Doctrine добавить следующее:
doctrine:
orm:
metadata_cache_driver: apcu
result_cache_driver: apcu
query_cache_driver: apcu
second_level_cache:
enabled: true
Если используете сериализацию и валидацию, то надо еще и такие конфиги:
framework:
validation:
cache: validator.mapping.cache
serializer:
cache: serializer.mapping.cache.apcu
И добавить в конфиги сервисов:
services:
serializer.mapping.cache.apcu:
class: Doctrine\Common\Cache\ApcuCache
doctrine.apcu.cache:
class: Doctrine\Common\Cache\ApcuCache
validator.mapping.cache:
class: Symfony\Component\Validator\Mapping\Cache\DoctrineCache
arguments: ['@doctrine.apcu.cache']