PCNTL在centos中安装以及多进程更新数据
来源:互联网 发布:电脑网络电视直播软件 编辑:程序博客网 时间:2024/06/13 22:28
最近在做项目的时候,需求有所变动,所以要增加单表字段,这就牵扯到了数据表的更新,但表中数据过于庞大不能单进程取更新数据,否则8w条数据得更新大半天。ps:此方法推荐本地自测用,不适合实际项目应用,还有PCNTL只支持linux,所以用win的朋友们还是循环分批更新吧
首先还是linux中PCNTL拓展安装
1、查询自己的php版本号,我用的是phpstudy php5.4
2、检查是否安装PCNTL扩展(没安装会显示标红段,我已经安装过了)
3、去php.net下载php5.4的tar包(官网现在最低版本的包是5.5版本,所以想要5.3和5.4的请点击下面的链接)
http://pan.baidu.com/s/1geBMW3D 密码:8zd6
4、解压php5.4包
5、解压后进入
6、执行phpize(若执行报错Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable. Then, rerun this script.请看6.1)
6.1
# yum install m4
# yum install autoconf
7、执行
8、执行
9、复制pcntl.so到extension下
10、打开php.ini编辑,增加最后一行,保存退出
11、phpinfo查看
安装好后就可以进行下面的操作,sql语句请自行填写
header('Content-Type:text/html;charset=utf-8;'); set_time_limit(0); //mysqli连接数据库 $link = mysqli_connect('192.168.0.168','root','root','tsbbc'); if(!$link) { printf("Can't connect to Mysql Server Errocode.%s:",mysqli_connect_error()); die; } else { echo '数据库连接成功<br /><br />'; } //common_id是主键 $result = mysqli_query($link,$sql); $row = mysqli_fetch_all($result); mysqli_close($link);
echo '开始时间:'.microtime().'<br />';
//数据大约有80000条 $max = count($row); $worke = 60; $pids = array(); for($i = 0;$i<$worke;$i++) { $pids[$i] = pcntl_fork(); switch ($pids[$i]) { case -1: echo 'fork error'.$i.' <br />'; exit; case 0: $param = array( 'lastid'=>ceil($max/$work*$i), 'maxid'=>ceil($max/$worke*($i+1)) ); runCommon($row,$param); exit; default: break; } } foreach($pids as $key=>$value) { if($value) { pcntl_waitpid($value,$status); } }
echo '结束时间:'.microtime(); function runCommon($row,$param) { $link = mysqli_connect('192.168.0.168','root','root','tsbbc'); for($i=$param['lastid'];$i<$param['maxid'];$i++) {
$sql = $sql; $link->multi_query($sql); } mysqli_close($link); }
阅读全文
0 0
- PCNTL在centos中安装以及多进程更新数据
- OSX中php多进程安装pcntl
- php多进程pcntl安装
- PHP多进程 pcntl(数据采集)
- php多进程pcntl安装 PCNTL函数族--PHP多进程编程
- CentOS 安装以及更新
- CentOS 安装以及更新
- PHP中利用pcntl实现多进程(模拟多线程)实例
- PHP中利用pcntl进行多进程并发控制
- PHP中利用pcntl实现多进程(模拟多线程)实例
- PHP中利用pcntl进行多进程并发控制
- PHP中利用pcntl进行多进程并发控制
- PHP的pcntl多进程
- PHP的pcntl多进程
- PHP的pcntl多进程
- PHP的pcntl多进程
- php 多进程函数 pcntl
- CentOS 7(Linux) 编译安装 pcntl扩展
- Scrapy框架抓取豆瓣电影的小爬虫学习日记(一)
- golang变量
- 扩充你的工具箱
- Java中的StringUtils类
- Spring的HelloWorld
- PCNTL在centos中安装以及多进程更新数据
- Android动态加载热更新修复功能 加载多个dex
- NotePad++使用技巧之宏的使用
- explicit 隐式转换与显示转换
- 从Excle导入到Oracle数据库方法总结
- 前端sublime-text3 这些就够了
- Oracle、Mysql之事务及四大特性
- 将自己的vim打造成IDE
- restful接口总结