0

我正在尝试创建一个每 1 分钟(或多或少)在服务器上运行的过程。我知道我可以通过 cronjob 实现它,但我担心,假设我有大约 1000 个任务(系统需要每 1 分钟检查 1000 个用户),它不会杀死服务器吗?

该系统应该从 google adwords API 同步数据并对其进行处理。例如,它应该从谷歌读取一个广告系列,每 1000 次展示或点击它应该做一些事情。所以很明显,我需要保持与 adwords api 的连接以实时查看统计信息。想象一下,这个过程需要运行 1000 个注册用户。

当我需要每 1 分钟运行一次繁重的循环时,我应该使用什么技术?非常感谢,奥伦

4

4 回答 4

0

理想情况下,如果您使用的是分布式工作流程,最好以这种方式为多个用户提供服务。

于 2012-06-20T12:43:43.937 回答
0

虽然有许多技术可供您使用,但当您没有提供足够的信息时,很难确定任何一种有用的特定技术。

于 2012-06-20T13:02:56.660 回答
0

您正在尝试做的事情有两个基本问题,第一个比另一个更严重。

您可以做的是选择您想要运行报告的时间范围(例如每 2 小时一次),然后坚持该时间表。为了给你一个粗略的估计,你可以并行运行 10 个报告,假设下载和解析一个报告需要 10 秒(这给你 1 个报告/秒的吞吐量,但这完全取决于你的互联网连接速度,负载在 AdWords API 服务器上,您的客户有多大,您请求数据的列和细分以及日期范围等。对于大客户,每个报告的时间很容易达到几分钟),您只能刷新 1000 个帐户20-30分钟的时间。

我的建议是在 Adwords API 的官方论坛上提出这个问题 - https://groups.google.com/forum/?fromgroups#!forum/adwords-api。您肯定会找到以前解决过类似问题的用户。

于 2012-06-27T05:53:37.023 回答
-3

您可以保护一个包含上次运行循环的时间戳的变量。现在,当用户访问您的页面时,请检查您的时间戳是否超过 1 分钟。如果他年龄较大,请运行您的循环并检查所有用户。

所以您的循环仅在您的网站上有用户时运行。这节省了很多服务器性能。

于 2012-06-20T12:47:09.363 回答