Mac下安装pthread扩展

简介

pthreads 是一组允许用户在 PHP 中使用多线程技术的面向对象的 API。 它提供了创建多线程应用所需的全套工具,无论是 Web 应用还是控制台应用。 通过使用 Thread, Worker 以及 Threaded 对象,PHP 应用可以创建、读取、写入以及执行多线程应用,并可以在多个线程之间进行同步控制。

安装

Mac下安装软件可以通过homebrew命令来执行,如果没有brew需要先安装.php安装pthreads扩展需要先保证thread safety

下载pthreads

最好通过github安装,据说官方版本在make时有问题
github: GItHub地址

编译并安装

1. 解压后进入文件夹,目录下有个config.m4文件
2. 终端输入phpize,生成build文件
3. 安装 make && make install
  • 问题1

Configuring for:
PHP Api Version:         20160303
Zend Module Api No:      20160303
Zend Extension Api No:   320160303
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.
  • 说明

如果在编译时遇到这个问题,说明是没有安装autoconf,此时当前目录下是不会生成configure文件的。

  • 解决

brew install m4
  • 问题2

checking for ZTS... configure: error: pthreads requires ZTS, please re-compile PHP with ZTS enabled
  • 说明

编译php的时候没有加入 --enable-maintainer-zts ,这个必须要重新编译php,不能动态加载的!

  • 解决

重新编译了php,在原来的编译参数基础上那个加入了 --enable-maintainer-zts ,重新编译安装php。

在php.ini中加入:

extension_dir = "/usr/local/webserver/php/lib/php/extensions/no-debug-zts-20100525"  ##必须和你的目录相对应!
  • 问题3

NOTICE: PHP message: PHP Fatal error:  The fpm-fcgi SAPI is not supported by pthreads in Unknown

Fatal error:  The fpm-fcgi SAPI is not supported by pthreads in Unknown
NOTICE: PHP message: PHP Fatal error:  Unable to start pthreads module in Unknown

Fatal error:  Unable to start pthreads module in Unknown
  • 说明

pthreads3只支持通过cli命令行模式来调用,不支持其他模式,因此在启动php-fpm进程时会报错。

  • 解决

cli模式下,php会优先读取php-cli。ini,如果没有找到会使用php.ini。通过 php --ini 查看php配置文件,复制php.ini放在同样目录下命名为php-cli.ini。然后将php.ini中对pthreads的引用注释

相关推荐