【问题标题】:Best way to handle memory intensive, long tasks in PHP在 PHP 中处理内存密集型、长任务的最佳方法
【发布时间】:2013-04-05 16:10:48
【问题描述】:

我发送了一个 APNS 通知服务器,理论上它每天会向 100,000 个用户发送大约 50,000 个处理后的通知(基于我们的用户数量)与 iOS 应用程序相关联的网络应用程序)。

通知会在 2 点左右发出,但它必须单独发送给每个用户(使用 Urban Airship),并且由 cron 作业 上的 curl 触发。

它遍历每个用户,并且必须使用 HTML 抓取工具(确切地说是 simple_html_dom),这需要 5-10 秒 每个用户,显然是 非常占用内存。一个简单的 GET 请求不可能是这样做的正确方法,事实上我肯定它会失败。在 cron 作业中处理这种耗时的、内存密集型任务的最佳方法是什么?

【问题讨论】:

  • 为什么会占用大量内存?
  • 我假设它会是,不是吗?每个处理 50000 个用户 10 秒?还是只需要很长时间?
  • 好吧,如果您不是一次加载所有用户,而是一个一个地加载(这更有意义),那么它不会占用大量内存,只需要很长时间。我猜用户存储在数据库中?
  • 另外你为什么要处理每个用户10s,你能解释一下为什么需要这么长时间吗?
  • 哦,是的,它是一个一个,这只是服务器创建对象和加载 HTML 的速度(从刮板)

标签: php memory-management cron daemon


【解决方案1】:

如果您将重用相同的变量或设置变量您将不再使用 null 您将不会耗尽内存。 只是不要一次加载所有数据并将其释放(设置为 null)或在处理后替换为新数据。

并确保你不能提高你的任务的速度 5-10 秒听起来真的很长。

【讨论】:

  • 谢谢,这就是我所需要的。是的,它会是
猜你喜欢
  • 1970-01-01
  • 2022-01-18
  • 2013-09-02
  • 2020-11-04
  • 2016-09-28
  • 1970-01-01
  • 2010-11-13
  • 1970-01-01
  • 2020-06-16
相关资源
最近更新 更多