Loading...

PHP 安装 Pthreads 扩展遇到的问题

之前我那台 E5-2698 v3 的服务器装的 PHP 是 7.2.9 NTS 版本,通过 pecl 和手工 make 一直安装 Pthreads 不成功。

一开始用 pecl 安装

pecl install pthreads

还试过手工编译安装

tar xzvf pthreads-3.1.6.tgz
cd pthreads-3.1.6/
phpize
make
make install

结果呢,每次到 make 的时候就报错,很头疼。

后来去咕鸽找了一下,才知道原来 NTS 版本的 PHP 不能安装 Pthreads 扩展(害我浪费了一下午时间)

然后重装了一下 PHP,装上了 7.2.10 版本,编译的时候也是各种麻烦,首先是编译出现 phpsapi 什么的错误,编译失败,只能清理重新编译。

make clean
rm -rf Makefile

后来才知道 make 要加上 ZEND_EXTRA_LIBS='-liconv' 参数,然后就是编译速度慢的问题,用 make -j 64 解决了问题(我服务器是 64 线程的 CPU)

原本的单线程编译超级慢,加了 -j 64 以后快到起飞,但是代价是 CPU 几乎跑满,不过只用乐几秒钟就编译完了。

但是很气愤!编译完以后,输入 php -v 可以看到是 PHP 7.2.10,但是 pecl 还是无法安装 Pthreads。

最后突然想起来一个骚方法,从我另一台已经装了 Pthreads 的服务器上把编译好的 .so 文件复制过去,然后再修改 php.ini 把扩展加上。

最后再输入 php -m 查看已加载的模块,完美。

现在可以跑多线程脚本了,美滋滋。

发表评论

》表情