PHP redis pcntl,添加php拓展(以php-pcntl及php-redis及php-pcntl为例)

我们都知道php是单进程的,虽然swoole支持多进程,但我没接触过(这个以后肯定要学习)。但是php添加一个php-pcntl拓展也可以实现多进程处理一个事务。

下面是一个简单的例子:

1 $pids = array();2 foreach ($result as $k => $v) {3 $pids[$k] = pcntl_fork(); //起一个子进程

4 switch ($pids[$k]) {5 case -1:

6 echo "fork error : \r\n";//进程创建失败

7 exit;8 case 0:

9 match($city, $table_name, $v);//进程创建成功 进行逻辑处理

10 exit;11 default:

12 break;13 }14 }15 foreach ($pids as $i => $pid) {16 if ($pid) {17 pcntl_waitpid($pid, $status);//监督子进程状态,并回收僵尸进程

18 }19 }

附:

php-pcntl文档地址:http://php.net/manual/zh/book.pcntl.php

当然本文的重点是编译安装拓展

一、安装php-pcntl拓展

我装的是php7,恰好我的php源码ext子目录下有pcntl 所以省去了下载的一步(如果没有请百度下载);

第一步,切到pcntl目录下

1 cd /home/***/php-7.2.3/ext/pcntl

第二步,调用phpize命令生成./configure 文件

1 find / -name phpize

//查看phpize的位置

1 /usr/local/php/bin/phpize //调用生成 ./configure

第三步, 调用./configure

1 find / -name php-config //查找php-config

1 ./configure --with-php-config=/usr/local/php/bin/php-config //取决于你安装php之后php-config文件的位置

第四步,make && make install编译安装(注:一定要分开操作,make的时候有时会提示些错误)

第五步,php.ini添加 pcntl.so

1 echo "extension=pcntl.so" >> /etc/php.ini //注意自己的php.ini的位置

第六步,重启php-fpm

1 systemctl restart php-fpm.service

也可以用

1 systemctl reload php-fpm.service

我的reload不知道怎么回事不能用了,所以用了restart。这样pcntl拓展就安装完成了

1 php -m |grep pcntl //查看拓展安装

二、安装php-redis拓展

php-redis的拓展安装与上面的步骤一样,写在博客里主要是因为当时php源码里没有redis的包,自己在网上找的,付一下地址:http://pecl.php.net/package/redis

步骤简单写一下:

1、下载拓展包,解压并切换到解压完的目录下

2、phpize生成./configure文件

3、./configure --with-php-config=/usr/local/php/bin/php-config

4、make && make install

5、php.ini添加 extension=redis.so

6、重启php-fpm

7、php-m检查拓展安装情况

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值