pthread с php 7.0.8 (ZTS)
Я хотел бы использовать pthreads с php 7.0.8 (ZTS) (скомпилировано и настроено вручную). Я добавил следующую конфигурацию во время компиляции php:
--enable-maintainer-zts \
--enable-pthreads=shared \
--with-tsrm-pthreads \
ВНИМАНИЕ: fpm запущен, pid 25546
ВНИМАНИЕ: готов к обработке соединений
Я добавляю расширение pthread с помощью pecl: pecl install pthreads-3.1.6
и я добавляю extension=pthreads.so в мой php.ini. Но после перезапуска php7-fpm php-fpm не работает:
ВНИМАНИЕ: Отделка...
ВНИМАНИЕ: выход, пока-пока!
У меня ошибка 502 nginx.
Как я могу добавить это расширение в моем php.ini без выхода php-fpm?
1 ответ
Вы должны использовать php-cli для использования pthreads. Вы можете создать вторую конфигурацию php.ini для CLI:
Сначала скопируйте, если не существует, ваш php.ini в php-cli.ini:
cp /PATH_OF_YOUR_PHP_INSTALLATION/php.ini /PATH_OF_PHP_INSTALLATION/php-cli.ini
Затем установите pthreads с помощью PECL (если php скомпилирован с
--enable-maintainer-zts \ --enable-pthreads=shared \ --with-tsrm-pthreads
)pecl install pthreads
Затем добавьте конфигурацию расширения в ваш php-cli.ini:
echo "extension=/PATH_OF_EXTENSION/pthreads.so" >>/PATH_OF_PHP_INSTALLATION/php-cli.ini
Finnaly, перезапустите службу php7-fpm:
service php7-fpm restart
Вы можете проверить, работает ли установка pthread, чтобы создать тестовый класс и выполнить его с помощью php: Create file: ImportWorker.php
<?php
class ImportWorker extends Worker {
private $data;
public function __construct($_data) {
$this->data = $_data;//
}
public function run(){
var_dump("Worker test");
}
}
Выполните это: php ImportWorker.php
-> Если у вас есть какие-либо ошибки, то pthreads не работает.