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的引用注释