2011-09-28 138 views
2

感谢您阅读我的问题,这里是我想要实现:使用PHP,如何每100次访问一次就触发一次?

  1. 我有一个PHP网页,人们参观。

  2. 我想触发一个约100次访问(平均)的工作到我的PHP页面。频率不一定非常准确,但从长远来看,统计数据应该接近100左右。

  3. 我无法写入磁盘,也无法使用数据库(由于负载/性能问题)。所以我认为这必须在PHP代码中完成,以及如何将它链接到像时间这样的东西。 (类似于生成一个随机数,然后匹配它的时间,如果匹配做了触发作业,如果不匹配,继续)。

我愿意接受任何意见或建议。如果可能,请提供示例代码。谢谢!

+0

每个访问者,或整个网站? –

+0

你也有统计它访问的频率?你知道你是否每天都有100次访问? – bozdoz

回答

4

就做这样的事情:

<?php 
    $random = mt_rand(1,100); 
    if ($random == 100) { 
    trigger_your_job_here; 
    } 
?> 

编辑:我原本使用rand(),但阿利克斯阿克塞尔编辑我的反应使用mt_rand()代替。这当然是正确的做法,因为mt_rand()不仅比rand()更快(根据PHP的文档,只有四倍),它还修复了各种系统上的一些缺陷rand()(如在Windows上,您可以只能得到32767的随机数)。

当然,两者都是伪随机数字生成器,并没有给出正确的随机数字,但出于您的目的,这就足够了。例如,你不会选择彩票号码。

+0

谢谢,我认为这是我正在寻找的答案。 – KoKo

+1

@KoKo:改用mt_rand()。 –

+0

@KoKo:一个简单的片段基准测试两种方法100,000次:http://codepad.org/Iz50AnBy。 –

0

如果您的主机配置支持,您可以写入RAM磁盘或memcached。也就是说,你是否尝试写入(普通)磁盘来查看它是否真的会导致性能问题?这里最好的方法是尝试一下并获得一些指标。

+0

如果计数器是本地的,则为APC/XCache。 –

相关问题