gpt4 book ai didi

php - 使用 cron 作业和发送电子邮件时 CPU 使用率高

转载 作者:搜寻专家 更新时间:2023-10-31 22:14:52 33 4
gpt4 key购买 nike

我有一个网站,它根据用户的时区和小时设置向其用户发送每日写作提醒。例如:纽约 (America/New_York) 的用户更喜欢在晚上 9 点收到他的提醒。在我当前的实现中(经过多次更改),我将时区和 notify_hour 存储在设置表中,并查找具有复杂而繁重的 MySQL 查询的用户。

查询太慢了,我添加了索引,它变得更快了。找到用户后,我尝试通过外部 smtp 服务器 (sendgrid.com) 发送电子邮件。我将 cron 作业设置为每 10 分钟运行一次并检查 200 个用户。我有大约 2000 个活跃用户。它像这样工作得很好。我的大部分用户都位于伊朗(亚洲/德黑兰),他们中的大多数人都选择晚上 9 点接收提醒。所以高峰时间在美国东部标准时间晚上 8 点到晚上 11 点之间。

但是服务器管理员说我的 cron 作业使用了太多 CPU。大约 25%,这是高的。我尝试调试我的脚本,它们查询本身很快,但是当涉及到通过 smtp 服务器发送电子邮件时,它需要更长的时间:

Email Reminder has been sent to 4 People - Query: 0.75444 Seconds
---- System: 11.18443 Seconds. ----

Email Reminder has been sent to 0 People - Query: 0.65488 Seconds
---- System: 0.68821 Seconds. ----

Email Reminder has been sent to 5 People - Query: 0.75551 Seconds
---- System: 3.45176 Seconds. ----

Email Reminder has been sent to 1 People - Query: 2.37117 Seconds
---- System: 9.05586 Seconds. ----

第一个数字是查询花费的时间,第二个是整个系统加载的时间。

这是我用于 cron 作业的脚本:http://pastebin.com/Eee3Lzys
邮件程序类在构建时连接到 smtp 服务器,并在脚本的每次迭代中发送电子邮件。 (对不起我的英语!)

你能建议一个更好的方法来实现整个目标或最小化 cpu 使用率或其他什么吗?
谢谢。

最佳答案

请不要在循环中插入

foreach($users as $k => $v){ 

使用比此 sql 查询更快的多原始插入性能取决于您的实时服务器上的数据。

关于php - 使用 cron 作业和发送电子邮件时 CPU 使用率高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7733524/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com