На моем веб-сервере IIS 7.5 я использую PHP 5.6 вместе с расширением wincache (1.3.6.1) для кэширования кода операции моих сценариев PHP. Это должно снизить нагрузку на процессор на сервере, поскольку сценарии PHP не нужно перекомпилировать каждый раз при поступлении запроса.
Однако я не вижу, чтобы загрузка процессора заметно снижалась. С 3-мя клиентами мой веб-сервис практически исчерпан (в среднем 80% загрузки ЦП), и это столько же, сколько без wincache.
Вот соответствующий раздел из php.ini
[PHP_WINCACHE]
extension=php_wincache.dll
; Full reference: http://php.net/manual/en/wincache.configuration.php
wincache.fcenabled = 0
wincache.ocenabled = 1
wincache.ucenabled = 0
wincache.fcachesize = 64
wincache.fcndetect = 0
wincache.maxfilesize = 256
wincache.chkinterval = 10
wincache.enablecli = 0
Мне пришлось отключить кеширование файлов, из-за этого: https://serverfault.com/questions/643458/failure-in-php-minit-functionwincache-with-wordpress-microsoft-azure-and-iis
print_r(wincache_ocache_fileinfo())
печатает это:
Array
(
[total_cache_uptime] => 303
[is_local_cache] => 1
[total_file_count] => 42
[total_hit_count] => 32160
[total_miss_count] => 42
[file_entries] => Array
... (skipped precise file info for brevity)
А также print_r(wincache_ocache_meminfo())
дает мне это:
Array
(
[memory_total] => 100663296
[memory_free] => 99769616
[num_used_blks] => 1677
[num_free_blks] => 1
[memory_overhead] => 26880
)
Любые предложения о том, почему я не вижу, что Wincache оказывает какое-либо влияние? Что еще я могу попытаться уменьшить загрузку процессора на моем веб-сервере?
Таким образом, похоже, что PHP теперь имеет встроенный кэш кода операции, Zend Opcache. Активация / настройка, которая вместо Wincache у меня работала. Теперь я вижу эффект кэширования кода операции, хотя он не такой большой, как я ожидал.
Начиная с версии PHP 5.5 можно активировать расширение Zend Opcache, добавив следующие строки в php.ini
:
zend_extension=php_opcache.dll
[opcache]
opcache.enable=1
Также смотрите эту страницу о том, как настроить / настроить расширение Zend Opcode: http://php.net/manual/en/book.opcache.php
Других решений пока нет …