【发布时间】:2012-11-19 00:02:00
【问题描述】:
想象一个呼叫中心,每分钟呼叫次数不能超过 2 个。因此,超出该范围的任何人都将获得电子邮件支持链接 ($bTrigger = FALSE)。其他所有人 ($bTrigger = TRUE) 都会获得技术支持电话号码。
脚本是 PHP。那么,最有效和最准确的构建方法是什么?
这是我目前所拥有的,但不幸的是它每分钟只触发一次。我似乎无法弄清楚为什么它不会每分钟运行两次。
<?php
$bTrigger = FALSE;
$sDir = dirname(__FILE__);
$sDir = rtrim($sDir,'/');
$sFile = $sDir . '/MINUTE-TIMER.txt';
$sLine = @ file_get_contents($sFile);
$sLine = str_replace("\r\n",'',$sLine);
$sLine = str_replace("\r",'',$sLine);
$sLine = str_replace("\n",'',$sLine);
$sLine = str_replace("\t",'',$sLine);
$asParts = explode(',',$sLine);
$nLetThru = @ $asParts[0];
$nLetThru = intval($nLetThru);
$nLastMin = @ $asParts[1];
$nLastMin = intval($nLastMin);
$nCurMin = intval(date('i'));
if (empty($sLine)) {
$nLetThru = 0;
$nLastMin = 0;
}
$nMaxLetThru = 2;
if ($nCurMin != $nLastMin) { // meaning, a new minute since last checked
if ($nLetThru <= $nMaxLetThru) { // meaning, we haven't hit more than max allowed
$bTrigger = TRUE;
++$nLetThru;
file_put_contents($sFile,"$nLetThru,$nCurMin");
} else {
file_put_contents($sFile,"0,$nCurMin");
}
}
if ($bTrigger) {
echo 'TRIGGERED!!!!';
} else {
echo 'not triggered';
}
【问题讨论】:
-
我们是来帮助解决具体问题的,而不是为你做你的工作。
-
@MarcB 我即将回答这个问题,然后人们可以挑战这个答案。我会从挑战中学习。
-
好的,已经足够反对投票和关闭请求了。在 META 中哪里说我无法显示我卡住的代码示例,看看人们是否无法修复它?
-
嗯? “不是一个真正的问题?”这是荒谬的!当然,这是一个真正的问题。问题是一个简单的编码错误:当分钟改变时,$nLetThru 没有被重置。
-
@Matt:没问题;由于问题尚未结束,我只是将答案发布为答案,这显然是更好的地方。谢谢。