一环境
centos 7 + lnmp一键安装 (PHP7.2.6) (PHP7.4+的可以用http://www.kaihuacloud.cn/?p=537)
二问题
为了偷懒使用了lnmp一键安装,后期因为资源数据的快速下载抓取,考虑使用PHP多线程(菜猿上路只懂PHP无奈,虽然知道PHP自身不支持多线程),于是故事开始了…查阅大量百度资源坑啊什么需要重新编译PHP的什么不用重新编译的~more… 最后差点把数据库搞掉~
三思考
要想安装成功pthreads 首要问题就是解决zts问题,(在这里我是用了一键部署的服务的方式,好处很多不多说了,自行体会)这个问题解决就后面就简单了
四方案
(一) 把PHP变成zts模式,由于使用了一键安装的方式,所以事情变得反而简单了…
打开lnmp一键安装官网,传送https://lnmp.org/faq/lnmp1-2-upgrade.html
我们看到这里有各种配置的升级方法,你的嘴角是不是微微翘起了~
没错正如你想~
我们通过阅读得知 通过配置把PHP需要编译的参数:
修改lnmp.conf配置文件里的 PHP_Modules_Options='--enable-maintainer-zts'
添加到对应位置,启动PHP版本升级,
下面只剩等待了~~~~
更新完成后
使用
[root@localhost ~]# php -v
PHP 7.2.6 (cli) (built: Sep 14 2018 15:36:17) ( ZTS )
Copyright (c) 1997-2018 The PHP
Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
看到以上就代表成功在即~
(二)pthreads的安装(主角)
[root@localhost ~]# wget https://codeload.github.com/krakjoe/pthreads/zip/master
[root@localhost ~]# unzip master
[root@localhost ~]# cd pthreads-master/
[root@localhost pthreads-master]# phpize
[root@localhost pthreads-master]#./configure --with-php-config=/usr/local/php/bin/php-config
[root@localhost pthreads-master]# make && make install
[root@localhost pthreads-master]# cd /usr/local/php/etc/
[root@localhost etc]# cd /usr/local/php/etc/
[root@localhost etc]# cp php.ini php-cli.ini
[root@localhost pthreads-master]# echo extension = /usr/local/php/lib/php/extensions/no-debug-zts-20170718/pthreads.so >> /usr/local/php/etc/php-cli.ini
1、确认扩展存在
[root@localhost ~]# php -m| grep pthreads
pthreads
2、测试代码
将下面代码存为PHP文件test.php
<?php
class workerThread extends Thread {
public function __construct($i){
$this->i=$i;
}
public function run(){
while(true){
echo $this->i;
sleep(1);
}
}
}
for($i=0;$i<50;$i++){
$workers[$i]=new workerThread($i);
$workers[$i]->start();
}
执行
[root@localhost ~]# php test.php
结果有
1~49 一秒输出全部伤害就成功了
评论前必须登录!
注册