Уже несколько недель я не могу установить pthreads. Я собираюсь перечислить журналы ошибок, а затем перечислю свои параметры конфигурации.
Я получаю следующие ошибки:
(Журнал ошибок Apache)
SAPI apache2handler не поддерживается потоками pthreads в Unknown в строке 0
apachectl -V вывод
Server version: Apache/2.4.18 (Unix)
Server built: Jan 10 2016 14:54:48
Server's Module Magic Number: 20120211:52
Server loaded: APR 1.4.8, APR-UTIL 1.5.2
Compiled using: APR 1.4.8, APR-UTIL 1.5.2
Architecture: 64-bit
Сервер MPM: рабочий
threaded: yes (fixed thread count)
forked: yes (variable process count)
Между тем журналы ошибок PHP:
(Журнал ошибок PHP)
bin / php -m
PHP Warning: Module 'pthreads' already loaded in Unknown on line 0
[PHP Modules]
Core
date
pcre
pthreads
Reflection
SPL
standard
Нет другого ini
файлы, которые загружают extension=pthreads.so
, Все эти ошибки возникают только тогда, когда я включаю extension=pthreads.so
в php-cli.ini
файл.
Без php-cli.ini
файл, php -m
перечисляет эти модули: bin / php -m
[PHP Modules]
Core
date
pcre
Reflection
SPL
standard
С этой точки зрения PHP И APACHE работают отлично, за исключением того, что класс pthreads не распознается.
Параметры конфигурации Apache
./configure \
--prefix=path/apache \
--exec-prefix=path/apache \
--with-pcre=path/apache/pcre \
--enable-module=so \
--with-mpm=worker
Параметры конфигурации PHP
./configure \
--prefix=path \
--exec-prefix=path \
--with-apxs2=path/apache/bin/apxs \
--with-config-file-scan-dir=path/php/lib \
--with-config-file-path=path/php/lib \
--disable-all \
--enable-maintainer-zts \
--enable-pthreads=shared
Потому что снова и снова pthreads НЕ поддерживается apache (PHP-CGI), только версией CLI
https://github.com/krakjoe/pthreads
Поддержка SAPI
pthreads v3 ограничен работой только в CLI: я потратил много лет, пытаясь объяснить, что потоки на веб-сервере просто не имеют смысла, после того, как 1,111 фиксируется на pthreads, я понял, что мой совет остается без внимания.
Так что я продвигаю совет к твердому и быстрому факту: вы не можете безопасно и разумно использовать pthreads где-либо, кроме CLI.
Спасибо за прослушивание ;)
На данный момент я думаю, вы знаете, почему вы получили эту ошибку. Если вы хотите использовать pthreads в CLI и JUST CLI (вы знаете, почему) и не загружать его в apache, у вас есть два варианта. 1- скомпилируйте php с параметром --enable-pthreads = shared. для этого вы должны загрузить pthreads в / path / php / ext и удалить файл конфигурации, затем выполнить ./buildconf --force для создания чистой конфигурации, и, наконец, ./configure --enable-pthreads = shared будет работать нормально. не добавляйте это расширение в php.ini. 2- скомпилируйте источник pthreads с помощью phpize и запустите любой сценарий php с -d extention = {path_to_pthreads.so}.