Недостатки или побочные эффекты при компиляции PHP с --enable-keeper-zts (для использования php pthread)
У меня есть веб-приложение, и оно отлично работает с PHP 5.5.5 в производственной среде.
Теперь на том же сервере мне нужно запустить несколько PHP-скриптов, использующих php pthread (v. 2.0.10)
Безопасно ли перестраивать php с --enable-maintainer-zts
(чтобы разрешить использование pthreads) и использовать один и тот же исполняемый файл как для веб-приложения, так и для сценариев CLI, использующих php-pthread ?
Или я должен сделать две сборки PHP: php
, php-zts
и использовать первый для веб-приложения, а второй для сценариев CLI?
Как --enable-maintainer-zts
по умолчанию не включен, я предполагаю, что у него есть некоторые недостатки или хуже (как я читал здесь https://github.com/travis-ci/travis-ci/issues/985) может привести к неправильному поведению (ошибки).
Веб-стек nginx + php- fpm + mySql в Mac OS X 10.9.5.
Я хочу, чтобы это было ясно: phtread не будет использоваться скриптами веб-приложения. Только по сценариям CLI.
1 ответ
От http://www.phpinternalsbook.com/build_system/building_php.html
(акцент мой)
--enable-debug
включает режим отладки[...]
--enable-maintainer-zts
обеспечивает безопасность потока.[...]
вам не следует использовать ни один из этих параметров, если вы хотите выполнить тесты производительности для своего кода, так как оба могут вызвать значительное и асимметричное замедление.
--enable-maintainer-zts
кажется, не вредно, но влияет на выступления. Так что это определенно не рекомендуется в производственной среде.
Отдельная сборка PHP с --enable-maintainer-zts
для того, чтобы использовать php pthread в скриптах CLI - это правильный путь.