Чтобы получить наибольшую выгоду от OPCache, вы должны отключить opcache.validate_timestamps
. Если впоследствии вы будете вызывать opcache_reset()
из скрипта каждый раз, когда развертываете свой код на сервере, то ваш OPCache очищается один раз для каждого нового набора файлов, и система не тратит ресурсы на постоянную проверку файлов.
Однако есть пара «подводных камней»:
Прежде всего, убедитесь, что вызов opcache_reset()
происходит, иначе вы будете использовать старый код. Если у вас есть сценарий для выполнения развертывания, убедитесь, что он громко завершается ошибкой, если этот шаг не выполняется.
Во-вторых, в зависимости от того, как именно работает PHP (mod_php или php-fpm), вам может понадобиться выполнить функцию opcache_reset()
через запрос к браузеру, а не через командную строку. Например, наиболее очевидным решением для очистки кеша является простой файл PHP, подобный следующему.
<?php
if (php_sapi() != "cli") die("Not accessible from web");
opcache_clear();
и выполнять этот файл при каждом извлечении кода. В зависимости от версии PHP и того, как он работает, это может очищать кеш только для командной строки, но не для вашей работающей веб-версии.
Если очистка из командной строки не работает, рассмотрите возможность создания аналогичного сценария и вызова его через Интернет с помощью curl
или wget
. Например, curl http://example.com/clear_cache.php?secret=abc123
. Если вы создаете сценарий для доступа в Интернете, убедитесь, что он проверяет секретный ключ, чтобы предотвратить загрузку вашего сервера кем-либо, постоянно очищая кеш.
Наконец, как предлагали другие, чтобы сделать ваши сборки полностью воспроизводимыми между тестированием и развертыванием, подумайте о том, чтобы в конце процесса тестирования создать файл .zip
всего кода, используемого для тестирования, включая библиотеки, извлеченные композитором. Вместо git pull
на вашем сервере просто разархивируйте файл в корень кода. Я понимаю, что git pull && composer update
легко. Однако, как предполагали другие, если библиотека обновляется между временем запуска тестов и временем развертывания, ваш код может больше не работать должным образом.
person
jwriteclub
schedule
22.07.2016
composer update
, потому что это захватит программное обеспечение, с которым ваши тесты не выполнялись. Всегда запускайтеcomposer install
при использовании автоматических сценариев. - person Sven   schedule 23.01.2015composer install
, но я написалcomposer update
в своем вопросе :/ Спасибо, я отредактирую свой пост! - person rap-2-h   schedule 23.01.2015