php 多线程
来源:互联网 发布:cms网站 编辑:程序博客网 时间:2024/05/18 11:47
昨天做了个题目:http://blog.csdn.net/liujihaozhy/article/details/50599388
一筐鸡蛋:
1个1个拿,正好拿完。
2个2个拿,还剩1个。
3个3个拿,正好拿完。
4个4个拿,还剩1个。
5个5个拿,还剩4个。
6个6个拿,还剩3个。
7个7个拿,正好拿完。
8个8个拿,还剩1个。
9个9个拿,正好拿完。
问筐里有多少鸡蛋?
求高人解答???
在本地计算这个过程,竟然超过了2秒的时间,突然想到多线程这个概念,于是就安装了pthread这个扩展,官网代文档说明:http://php.net/manual/zh/book.pthreads.php,然后跑到张宴的博客http://zyan.cc/pthreads/,根据提示安装成功,
下面就来缩短上面的计算时间(引用大神的代码进行修改):
//thread classclass test_thread_run extends Thread {public $data;public $start;public $end;public function __construct($start,$end) {$this->start = $start;$this->end = $end;}public function run() {$this->data = get_data ($this->start,$this->end);}}function model_thread_result_get($urls_array) {foreach ( $urls_array as $key => $value ) {$thread_array [$key] = new test_thread_run ($value['start'],$value['end']);$thread_array [$key]->start ();}foreach ( $thread_array as $thread_array_key => $thread_array_value ) {while ( $thread_array [$thread_array_key]->isRunning () ) {usleep ( 10 );}if ($thread_array [$thread_array_key]->join ()) {$variable_data [$thread_array_key] = $thread_array [$thread_array_key]->data;}}return $variable_data;}function get_data($start,$end){$return = array();for ($i=$start;$i<$end;$i++){if(!($i%1) && ($i%2 == 1)&& !($i%3) && ($i%4 == 1)&& ($i%5 == 4) && ($i%6 == 3)&& !($i%7) && ($i%8 == 1) && !($i%9)){array_push($return,$i);}}return $return;}//线程数设置为2--可根据服务器来设置一个具体合理的线程值$urls_array = array(array('start'=>0,'end'=>5000000),array('start'=>5000001,'end'=>10000000),);$t = microtime ( true );$result = model_thread_result_get ( $urls_array );$e = microtime ( true );echo "多线程:" . ($e - $t) . "<br/>";echo count($result[0]) + count($result[1])."<br/><br/>";$t = microtime ( true );$result_new = array();foreach ( $urls_array as $key => $value ) {$result_new = array_merge_recursive($result_new,get_data ($value['start'],$value['end']));}$e = microtime ( true );echo "For循环:" . ($e - $t) . "<br/>";echo count($result_new)."<br/><br/>";
计算的结果大约是这样子:
多线程:1.7861778736115
3968
For循环:2.5182521343231
3968
大家可以去体会下
1 0
- php多线程.
- php多线程
- php多线程
- PHP多线程
- php 多线程
- php多线程
- PHP 多线程
- PHP多线程
- php多线程php fsockopen解决办法
- php中实现多线程
- PHP中实现多线程
- php多路复用(多线程)
- php实现多线程
- php中实现多线程
- php实现多线程
- PHP中实现多线程?
- PHP简单模拟多线程
- php伪多线程实现
- Javascript 面向对象编程
- Spring的aop简单示例
- ZMQ源码分析(七) --进程内通讯
- 工作流Activiti 变量设置问题
- hdoj 1875 畅通工程再续
- php 多线程
- zookeeper 脚本 zkServer.sh zkCli.sh zkCleanup.sh zkEnv.sh 详解(二)
- 【CSS】初识选择器(2)
- 从输入 URL 到页面加载完成的过程中都发生了什么事情?
- hdu1426&3111 数独问题
- 如何做系列(5)-james mail安装总结
- 如何做系列(4)-微博URL短网址生成算法原理(java版、php版实现实例)
- 城市间紧急救援
- 如何使用Method Swizzle实现友盟统计