pthread with php 7.0.8 (ZTS)

pthread with php 7.0.8 (ZTS)

我想在 php 7.0.8 (ZTS) 中使用 pthreads(手动编译和配置) 我在 php 的编译过程中添加了以下配置:

--enable-maintainer-zts \
--enable-pthreads=shared \
--with-tsrm-pthreads \

NOTICE: fpm is running, pid 25546

NOTICE: ready to handle connections

我使用 pecl 添加了 pthread 扩展:pecl install pthreads-3.1.6 并将扩展=pthreads.so 添加到我的 php.ini 中。但是重启后 php7-fpm, php-fpm 不是 运行 :

NOTICE: Finishing ...

NOTICE: exiting, bye-bye!

我有一个 502 nginx 错误。

如何在不退出 php-fpm 的情况下将此扩展添加到 php.ini?

您应该使用 php-cli 来使用 pthreads。您可以为 CLI 创建第二个 php.ini 配置:

  • 首先,如果不存在,请将 php.ini 复制到 php-cli.ini :

    cp /PATH_OF_YOUR_PHP_INSTALLATION/php.ini /PATH_OF_PHP_INSTALLATION/php-cli.ini
    
  • 然后,用 PECL 安装 pthreads(如果 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
    
  • 最后,重启你的 php7-fpm 服务:

    service php7-fpm restart
    

您可以测试 pthread 安装是否正常工作以创建测试 class 并使用 php 执行它: 创建文件: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 没有工作。