在哪里存储系统标志?

时间:2011-04-30 12:07:59

标签: php

这可能看起来是一个愚蠢的问题,但是我已经思考了几天,我只想出一个答案,所以我想我会把它打开,看看其他人的想法。

我有一个PHP脚本作为CRON作业运行,并检查我们的CDN是否正常运行。如果是,则需要设置一个标志以显示'true',如果不显示'false'。然后,主要的PHP网页每次用户访问网站时都需要检查此标记,并相应地设置CDN URL变量。

查询是我们存储此标志的位置?我们可以将它放在一个数据库中,但随后每个页面加载都会“点击”数据库。此外,由于我们正在使用Memcache,它可能会导致更新延迟(尽管有很多方法,显然)。

我的下一个想法是将其保存到服务器上的简单文本文件中。但是a)我们有负载均衡的服务器,虽然我们可以在每台服务器上运行相同的CRON作业,这似乎效率低下,而b)打开和读取文本文件可能会减慢页面负载,因为它涉及每次磁盘活动 - 当系统每周提供300万个网页时,这并不好!

理想的是PHP系统变量,它在页面之间保留其值 - 但当然,这不存在!它不是那种应该作为cookie存储在用户机器上的信息。

有人有任何想法吗?欢迎所有评论!

2 个答案:

答案 0 :(得分:2)

如果您已经在使用Memcache,那么为什么还需要CronJob呢?

将CDN的检查放入常规应用程序代码中。将结果缓存在Memcache中,其生命周期为Cron Interval现在的生命周期。如果缓存是陈旧的,请对CDN进行全面检查,否则返回缓存的结果。

如果您想保留CRON作业并担心磁盘I / O,请考虑using a RAM diskSemaphoresShared Memory来存储结果。但是当你已经在使用memcache时,它似乎毫无意义。

答案 1 :(得分:1)

您是否已使用数据库连接?

  • 如果是这样,请使用;你可以很容易地将它融入你现有的复制机制中,我确定。

  • 如果没有,那么无论你在这里做什么都会增加开销,无论是在磁盘上读取文本文件还是从以前没有的数据库中读取。