PHP中的多线程/并行处理

ash*_*exm 2 php mysql concurrency multithreading phpexcel

我有一个PHP脚本,它将使用PHPExcel从MySQL DB查询的数据生成报告.目前,处理是线性的,因为它从MySQL获取数据,读取Excel模板,将数据写入模板,然后输出.我已经优化了代码,使得数据只迭代一次,并且PHP方面的处理很少.查询在不到.001秒内返回数百行,因此运行速度足够快.经过一段时间后,我发现我的瓶颈是(惊讶,惊讶)阅读模板并编写输出.我想这样做:

Spawn a thread/process to read the template
Spawn a thread/process to fetch the data
Return back to parent thread - Parent thread will wait until both are complete
Proceed on as normal
Run Code Online (Sandbox Code Playgroud)

我的主要问题是这可能,值得吗?如果两者都是,你会如何解决它?此外,它在CentOS上是PHP 5

Kev*_*der 8

分叉Apache进程通常不是一个好主意.这可能导致未确定的结果.相反,使用某种排队机制是更可取的.Gearman是一种可以使用的开源排队机制.我还在Zend Server作业队列上有一篇博文,讨论异步运行任务你是否排队?Zend Server作业队列简介.

您还可以使用Zend Framework Queuing类之类的东西来实现一些异步工作. Zend_Queue

@Swisstack,我也不同意你的断言,即PHP不是为了高性能而创建的.很少有语言特性导致性能下降.也许通过比较不同语言的$ a ++进行原始语言测试你会看到,但这种类型的测试是无关紧要的.我已经完成了PHP的咨询工作多年,我从未见过因语言而导致的性能问题.