我有一个PHP脚本,它加载8个CPU的1个CPU,100%。我可以共享CPU资源以更快地运行PHP脚本吗?
现在,当我启动PHP脚本时,它将1个CPU加载到100%。但其他有1-5%的负荷。因此,我的脚本执行了40秒。
我可以在所有处理器之间共享负载,还是这不可能?
答案 0 :(得分:2)
首先:如果您在 40秒内受到CPU限制,则需要重新考虑您的算法或编程语言。 PHP恕我直言仍然是最好的面向用户,HTML / JSON /任何输出格式生成引擎。这就是为什么它建立在无共享架构上的原因:一个请求获得一个CPU,计算并终止。您可以通过在多个CPU之间分配请求来扩展此体系结构。
也就是说,如果一个单个请求需要40秒才能完成,那么<em>可能运气好Worker threads,那么你需要分拆你的主线程,可以在未充分利用的CPU上运行。但同样,这是一个复杂的规模 - 在开始这条路线之前要认真思考。
自行更新线程管理的一个可能更容易的替代方法是将工作分配给专用的工作进程。 Gearman是一个众所周知的框架,可以帮助您解决此问题。
答案 1 :(得分:0)
您可以使用APC扩展程序http://www.php.net/manual/de/book.apc.php。并存储大阵列等。如果我没有记错,这将被存储到共享内存中,并且可以通过所有处理器访问。此外,因为这些变量等是缓存的PHP将不会再次编译它应该增加您的PHP应用程序的性能。
这是我能想到的唯一想法。