博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php pthreads 多线程扩展的使用:一个较为稳定例子。
阅读量:5162 次
发布时间:2019-06-13

本文共 2230 字,大约阅读时间需要 7 分钟。

今天研究了worker stackable的配合方法,写了两种形式,虽然能工作,但是都会出现内存不听增长的问题;

于是把第一个方法的代码邮件给了作者,到现在他没有回复我。

 

我最后放弃两者配合的方式,直接使用worker,发现到现在执行了582000个工作,内存没有增长,速度也基本稳定,代码如下:

shift()){ $data_flag = true; $this->doSomeWork(); if((++$count)%1000==0){ printf("Work Mermory used %.3fMB RAM, time: %3f===> %d \n", memory_get_peak_usage(true)/1048576, (microtime(true) - $stime), $count); $stime = microtime(true); } }else{ usleep(100000); } } exit; } private function doSomeWork(){ $str = 'sdalsadkfkasd;lfksa;ldfkas;lkf;lsadkf;as'; $len = strlen($str); $s = substr($str,rand(0,$len)); $len = floor(strlen($s)/2); for($i=0;$i<$len;$i++){ $tmp = $s[$i]; $idx = intval($len-$i-1); $s[$i] = $s[$idx]; $s[$idx] = $tmp; } }}$worker= new ExampleWorker(sprintf("Worker [%d]", 0));$worker->start();$stime = microtime(true);$count = 3000000;//99999999;$total = $count*5;$ct = 0;while($count--){ //for ($target = 0; $target < 5; $target++) $worker[]='data_'.(++$ct); usleep(rand(200,1800));}//sleep(10);$runtime = (microtime(true)-$stime);printf("---------------------------------------------------------\n");printf("Used time is %f \n", $runtime);printf("Mermory used %.3fMB RAM, added %d, left %d\n", memory_get_peak_usage(true)/1048576, $total, count($worker));printf("---------------------------------------------------------\n");//var_dump($works);

 

虚拟上的运行速度:

Work Mermory used 0.250MB RAM, time: 2.141709===> 607000 Work Mermory used 0.250MB RAM, time: 1.721918===> 608000 Work Mermory used 0.250MB RAM, time: 1.858363===> 609000 Work Mermory used 0.250MB RAM, time: 1.734542===> 610000 Work Mermory used 0.250MB RAM, time: 1.819794===> 611000 Work Mermory used 0.250MB RAM, time: 1.847132===> 612000 Work Mermory used 0.250MB RAM, time: 1.740353===> 613000 Work Mermory used 0.250MB RAM, time: 1.628364===> 614000 Work Mermory used 0.250MB RAM, time: 1.731518===> 615000 Work Mermory used 0.250MB RAM, time: 1.730583===> 616000 Work Mermory used 0.250MB RAM, time: 1.825315===> 617000 Work Mermory used 0.250MB RAM, time: 1.762334===> 618000 Work Mermory used 0.250MB RAM, time: 1.842860===> 619000 Work Mermory used 0.250MB RAM, time: 1.732677===> 620000

 

转载于:https://www.cnblogs.com/lein317/p/5067585.html

你可能感兴趣的文章
$_SERVER 等超全局数组的用法 $_COOKIE $_GET $_SESSION
查看>>
20155308 加分题-mybash的实现(第五周)
查看>>
C#调用R语言
查看>>
nodeJs是什么
查看>>
Oracle数据库sys和system用户的默认密码及如何修改密码
查看>>
网络I/O模型--06异步I/O
查看>>
Individual Project - Word frequency program - Multi Thread And Optimization
查看>>
hdu 4960 数列合并
查看>>
IP通信基础 4月17日
查看>>
python学习之字符串常用方法
查看>>
jquery1.7.2的源码分析(二)
查看>>
JavaScript自学代码--(三)
查看>>
[NOIP2000]单词接龙
查看>>
设计模式之外观模式
查看>>
Nginx反向代理的基本配置
查看>>
SpringMvc文件资源防止被外链链接
查看>>
WCF、WebAPI、WCFREST、WebService之间的区别
查看>>
设计模式 -- 单例模式
查看>>
Linux下安装 php imagick扩展
查看>>
git出现: not a git repository
查看>>