Есть ли способ включить безопасность потоков в PHP без перекомпиляции или использовать YUM для этого?
Я пытаюсь установить pthreads, и для этого требуется, чтобы PHP был скомпилирован с помощью --enable-maintainer-zts
. Однако мне не нужно перекомпилировать, потому что я хотел бы управлять своим PHP-стеком, используя yum. В настоящее время я использую репозиторий REMI. Я заметил, что есть пакет php-zts, однако для моей версии PHP версии 4.4 нет одного, и я не могу найти RPM-источник для php-zts.
Есть ли способ, которым я могу использовать yum и включить безопасность потоков в PHP, поэтому я могу установить pThread, используя
#pecl install channel://pecl.php.net/pthreads-0.0.42 downloading pthreads-0.0.42.tgz ... Starting to download pthreads-0.0.42.tgz (53,755 bytes) .............done: 53,755 bytes 33 source files, building running: phpize Configuring for: PHP Api Version: 20100412 Zend Module Api No: 20100525 Zend Extension Api No: 220100525 building in /var/tmp/pear-build-rootkThpG6/pthreads-0.0.42 running: /var/tmp/pthreads/configure ... checking whether to enable Threading API... yes, shared checking checking for ZTS... configure: error: pthreads requires ZTS, please re-compile PHP with ZTS enabled ERROR: `/var/tmp/pthreads/configure' failed
Как вы можете видеть, он терпит неудачу, потому что PHP не поддерживает ZTS.
Доступность ZTS определяется во время компиляции, поэтому нет – вы не можете динамически включать и отключать ее.
Возможно, вы могли установить pThreads через yum или другой диспетчер пакетов в зависимости от вашего дистрибутива, но обратите внимание, что «возможный» не обязательно означает, что он доступен в вашем случае. Это зависит от того, насколько ваш программный репозиторий имеет такой доступный пакет, с зависимостью от другой сборки PHP, которая имеет ZTS. Я очень сомневаюсь, что это будет так.
К сожалению, разработчики пакетов CLI не обеспечивают безопасность потоков в большинстве пакетов unix. Иногда это разрешено для рабочего mpm apache, но не всегда включает полную среду сборки (так, что pecl не будет работать).
Короче говоря, нет возможности включить ZTS во время выполнения, это опция времени сборки, которая делает изменения в сборке просто невозможными после компиляции источников.
Однако установить копию для себя не очень сложно.
Путь, который вы берете, зависит от вашего опыта с вашим дистрибутивом и предполагаемым использованием.
Если вы хотите перезаписать установку системы с помощью потоковой безопасной версии, есть информация http://pthreads.org/building
Если вы хотите построить изолированную установку, некоторую информацию можно найти на странице здания на pthreads.org, кроме того, я экспериментировал с RPM, http://github.com/krakjoe/spex содержит файл rpmbuild, который будет рулон копия master и master pthreads в / opt / php-pthreads с полной средой сборки, включает в себя и все колокола и свистки, без поддержки Apache в версии rpmbuild, потому что это сделает ее более сложной и огромной, она включает fpm ( также поддерживается).
Вы первый человек, с которым я столкнулся, что я действительно могу посоветовать использовать rpmbuild, потому что вы можете сохранить RPM для других виртуальных машин и только пройти один раз (до следующего обновления в любом случае), недостаток из этого, он использует кратковременный код из PHP, который в настоящее время находится в бета-версии …
Надеюсь, что вы пойдете 🙂