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 не работает.

Другие вопросы по тегам