有人用过PHP5的threads库吗?可以让PHP像JAVA一样支持可控的多线程编程,实现高性能计算,希望版主置顶讨论

wfqn 2004-11-25 11:26:46
在PHP5的下载链接下面有一个pecl-5.0.2-Win32.zip的包,里面有一个threads扩展库,使用它可以实现JAVA类似的多线程计算,这样PHP终于可以充分利用多CPU服务器的运算能力,做大型应用开发了!

以前没发现PHP提供下载PHP5下的PECL扩展库之前,我从cvs.php.net的pecl目录中下载过它的源代码,并自己编译在PHP4下做过测试,确实在我的双CPU服务器下一个PHP.exe进程可以占用98%的CPU,而不使用多线程并行运算,最高也不可能超过50%,速度也快了一倍(理论上使用并行运算时增加一个CPU就可以提高一倍)。而且可以用程序独立控制每个线程的进行。

在cvs.php.net里的源代码中有几个测试程序,大家可以调试一下试试。

但不管是PHP5提供的包还是我自己编译的,在我这里都有一个问题:就是有些函数可用而有些不可用,也会导致一些普通PHP的功能一直输出不了结果。最直接的表现就是执行phpinfo()函数时页面最后有一点地方要相当长时间才会显示出来,但那段时间之内CPU占用率非常低,感觉像是被控制了执行时间,被延迟执行了。

大家可不可以发动一下一起研究研究?或是如果是它的BUG那有高手是否可以改进一下?我看过,它的代码并不多。

这是PHP走向大型应用非常重要的一个特性。比如在企业应用中,进行产品成本核算,要是上万种产成品和半成品(这在企业中已经算是很小的数量了)进行成本核算,用普通单线程方式可能需要几个小时才能完成计算。而且在单线程方式下用户希望通过购买有几十块CPU的高性能服务器来提高性能,都是没有任何作用的,因为单线程方式只能利用一块CPU的能力,单CPU与多CPU服务器的计算速度是一样的!!

而如果采用多线程编程,可以采用同时对几十种(或更高)产品并行计算的方法,各自的线程各自与数据库连接获取数据,并行处理,并在计算完成后自动发起下一个产品的计算。这样在多CPU情况下就可以用1/n(n为CPU数量)的时间完成计算。

这个特性将会为我们这些PHP开发者提供很大的发展机会,希望大家参与!
...全文
749 27 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
drifters 2004-12-06
  • 打赏
  • 举报
回复
继续关注
unixdotnet 2004-12-06
  • 打赏
  • 举报
回复
To wfqn():

请问你是不是奥玛的朋友?见识多了,我的体会也跟你相似,能否留个QQ号聊聊?我的是418935131
wfqn 2004-12-06
  • 打赏
  • 举报
回复
关键是我们定位是跨平台应用,因为我们的开发人员对PHP熟悉,所以就选了它。说来当时没选JAVA而选了PHP确实是一大失误。现在要找到一种好方法解决也不容易。

如果这个threads库不行,也只好自己组织人写一个PHP的线程扩展了,除此之外,好像也没什么好办法。

或许可以完善一下这个threads库。
magicsnake 2004-12-06
  • 打赏
  • 举报
回复
如果楼主是做应用开发的,我觉得在一定的环境下选择一种合适的工具进行工作才是正道.楼主不能扬长避短,硬是要php做他所不能胜任的工作,只会是浪费时间.
如果楼主是致力于做工具,那么精神可嘉,帮你顶一下.
fzjw 2004-12-05
  • 打赏
  • 举报
回复
呵呵,我在php.ini中加入threads后,Apache2出错,看来,threads需要解决的问题还很多
leikaixin 2004-12-05
  • 打赏
  • 举报
回复
对不起,还没有用php5.0
我还在用php4.3.12 哦,命苦啊
lisoon 2004-12-05
  • 打赏
  • 举报
回复
看来楼主对php的感情很深,说得都很中肯也很有理,希望楼主把应用心得写出来,给我们这些小辈学习,由于c语言不好,帮不了。
-神仙- 2004-12-05
  • 打赏
  • 举报
回复
对不起,还没有用php5.0
我还在用php4.3.12 哦,命苦啊



这个4.3.12是哪里找到的啊
php.net上才放出4.3.10rc1啊
jaexc 2004-12-05
  • 打赏
  • 举报
回复
我是第一次听说这个threads库,都怪自己的E文不好的啊

以后有时间好好研究下,提高PHP水平。

其实如果平时C不精通和做的项目不多,那看到那些源码头都晕。
wfqn 2004-12-05
  • 打赏
  • 举报
回复
这个threads库也是支持php4的,我本来就是为php4编译测试的。

哪位高手同时对C和PHP都熟悉啊?帮忙分析一下源代码,看看为什么会出现这种情况?
threads库的源代码并不多,很好读懂
loveconan 2004-12-05
  • 打赏
  • 举报
回复
C才是正道
:D
surfchen 2004-12-04
  • 打赏
  • 举报
回复
对于threads库,我不了解,所以暂时也不想参与相关讨论,我只想对wfqn说几句话...

网站程序确实如你所说,“属于是人都会做的东西”..
当然,这个前提是hello world也算“网站程序”...

一个好的网站程序,人人都会做吗???

我看过网上很多的整站程序,很多都是设计地很粗糙的。
扩展性低,可读性差,难维护...

我学WEB设计以来,回头看看一段时间前做的程序,都感觉到大量设计(包括架构,具体代码实现)上缺陷...
我自认为我也算一个人,奇怪的是我并没有觉得我如你说所的——人人都会做站点程序..当然这个做在上一句话里并不等于做HELLO WORLD...



不过对这个帖子的讨论,我觉得还是有必要的....我也非常希望能见到PHP得到更大的发展.
wfqn 2004-12-04
  • 打赏
  • 举报
回复
不过网站程序确实已经算不上有什么技术含量了,属于是人都会做的东西了。

那种非常高性能的网站往往前台有可能用PHP,但实际后台的处理很多用C之类的语言,大家必须正视这一点
wfqn 2004-12-04
  • 打赏
  • 举报
回复
但原来PHP对多线程支持不好,决定了它的一个进程只能利用一块CPU的能力,要用多CPU的能力必须用JAVA或.net之类的,跨平台的只有JAVA,所以当然出路只能转JAVA。

但现在有了threads库,PHP已经可以了,但它的稳定性确实有些问题,大家仔细研究一下不好吗?

在这里不是讨论PHP有没有前途,而是现在已经有一个非常好的解决PHP弱点的东西,为什么不好好研究呢?
allkill 2004-12-04
  • 打赏
  • 举报
回复
解决这个问题是早晚的事,万事开头难嘛!
wfqn 2004-12-04
  • 打赏
  • 举报
回复
我们公司是在完全用PHP做开发,开发的程序也是很大型的程序,有网站管理程序,也有大型的企业管理程序。

做网站相对简单,所以用PHP一直没什么问题,效率也还可以。但做企业管理软件系统中就遇到了一些PHP无法解决的性能瓶颈,没有对线程的支持也是其中之一。

所以很长时间以来,我们一直在怀疑选择PHP是不是选择错了,但已经花几年写了几十万行代码了,程序已经非常大,已经没有回头的机会。

我们考虑过用PHP跟JAVA结合开发,但PHP4调用JAVA的方式效率太低,实在没有什么利用价值,无法利用JAVA相对高的运算效率。现在唯一的方法是自己用C写PHP扩展库,但那样又存在C的跨平台编程困难的问题:各种不同的操作系统使用不同的线程机制与函数库,必须要为不同的操作系统写不同的模块,而且要在不同操作系统的不同运行环境下分别编译才能正常运行,这对于跨平台的通用软件来说简单是灾难!

现在来看,JAVA确实还是完美的。不知道PHP5对JAVA调用机制是不是有了改善?如果可以,我就可以考虑使用与JAVA混合编程的方式,将来逐渐转到完全用JAVA开发。

但我真的不想这么做,我们的所有开发人员对PHP真的是非常熟悉了,用了那么多年,已经有非常深的感情。有时也在想,PHP真的就这么差么?前段时间突然在cvs.php.net发现了那个PECL的threads扩展库,简直是一阵狂喜!

当时下载了threads的c源代码后,自己用VC编译成DLL后加载到PHP4的扩展中,运行测试结果发现确实是实现了真正的多线程!当时的感觉简单太棒了!但随后发现它带来了一些其它问题,那时以为是自己编译的方法不对。

后来又在php网站上看到了PHP5提供了编译好的二进制版本,兴冲冲地安装上,结果发现跟我自己居PHP4下编译的情况差不多。

我实在是无法忍受PHP这么重要的一个重大提高不能使用,如果这个问题解决了,我就不用再考虑更换JAVA的问题了,所以希望大家来一直研究一下,如果谁能解决,要我给多少分都可以,虽然我现在也只有2000来分了。
-神仙- 2004-11-26
  • 打赏
  • 举报
回复
谁说php程序员都要转向Java,只不过Java目前更为流行,多学一样多一点优势

php程序就没有技术含量吗??????
erldy 2004-11-26
  • 打赏
  • 举报
回复
关注!!!
wfqn 2004-11-26
  • 打赏
  • 举报
回复
高手们参与啊
wfqn 2004-11-26
  • 打赏
  • 举报
回复
当然是多线程,你们可以实际测试一下,最直接的表现就是在系统中只有一个PHP进程的情况下,却在双CPU的服务器上占了90%以上的CPU。

这些线程的执行进度是可控的。所有这些只有你们实际测试了这个库才知道。

虽然PHP的效率远不如C/C++高,但跟JAVA一比还是可能的。

要不然PHP程序员将来的出路都转向JAVA?那开始学习PHP做什么?直接学JAVA不就得了?
再不然PHP程序员们做一辈子几乎没什么技术含量,只能拿低薪的网站程序开发者?

即使你是搞网站开发?如果一个网站的服务器CPU数量比较多,那用PHP根本就是对服务器的浪费!速度比JAVA使用多线程会慢非常多。谁会选择PHP?那我们这些PHPer的发展空间在哪里?

特别是电子商务网站现在越来越多,而且项目价格越来越低,那种利润较高的项目都会要求比较高的性能,靠一堆if可以吗?所以这种项目都被JAVA或是PHPer们都瞧不起的asp/asp.net拿走了。

研究它是为了我们自己!希望大家认真测试一下!
加载更多回复(7)

21,890

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧