php mysql分配cpu内衬_您如何在PHP/MySQL应用程序中充分利用多核CPU?

PHP不是面向多线程的:正如您已经注意到的,每个页面由一个PHP进程提供 – 一次只能执行一个操作,包括在数据库服务器上执行SQL查询时只是“等待”。

不幸的是,你可以做的很多,这是PHP的工作原理。

不过,这里有几个想法:

>首先,您的服务器一次可能会有更多的用户,这意味着您将在当时提供多个页面,这反过来意味着您将拥有多个PHP进程和SQL查询同时运行…这意味着将使用您的服务器的几个内核。

>每个PHP进程都将在一个核心上运行,以响应一个用户的请求,但是并行运行Apache的几个子进程(每个请求一个,最多几十个或几百个,具体取决于您的配置) )

> MySQL服务器是多线程的,这意味着它可以使用多个不同的内核来回答几个并发请求 – 即使每个请求不能被更多的一个核心服务。

所以,其实你的服务器的8核将最终被使用;-)

而且,如果您认为您的网页需要太长时间才能生成,可能的解决方案是将您的计算分为两组:

>一方面,生成页面必须做的事情:对于那些,你没有太多可以做的事情

>另一方面,有时需要运行的东西,但不一定立即进行

>例如,我想一些统计学计算:你希望他们是最新的,但是如果他们落后几分钟,那通常是可以的。

>电子邮件发送相同:无论如何,在您的用户收到/阅读邮件之前几分钟会通过,所以不需要立即发送。

对于我的第二点的情况,因为你不需要这些事情立即完成…嗯,只是不要立即做他们的—)

我经常使用的一个解决方案是一些排队的美国主义:

> Web应用程序将东西存储在“todo-list”中

>而且“todo-list”被某些经由cronjob经常运行的批处理排队

而对于其他一些操作,您只需要每X分钟运行一次,而且这里也是一个完美的工具。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值