我们有一个 Cron 脚本,它可以检测 - 如果某些用户被踢出我们的应用程序。如果特定值为 1,我们可以检测到这一点 - 但在流中,没有设置新条目。脚本每小时运行一次。大多数未检测到。但自 2012-10-31 23:59:03 以来,每个用户都被检测到。如果我在本地机器上运行脚本,甚至在 cron 运行的同一台机器上运行脚本。一切都得到了应有的处理。首先,我们的脚本:
require_once ('cron_init.php');
ini_set('date.timezone', 'Europe/Berlin');
ini_set('max_execution_time', 30);
ini_set('memory_limit', -1);
error_reporting(E_ALL);
ini_set("display_errors", 1);
Zend_Date::setOptions(array('fix_dst' => true));
$userinfos = new Repricing_Dbservices_Userinfos();
$users = $userinfos->getUsersForRepricing();
$repricingstream = new Repricing_Dbservices_Repricingstream();
$error = new Repricing_Dbservices_Error();
if($users!==false AND count($users)>0){
$counter = 0;
$errCounter = 0;
$jetzt = new Zend_Date();
$jetzt->setTimezone('Europe/Berlin');
$jetzt = $jetzt->get(Zend_Date::TIMESTAMP);
foreach($users as $user){
$stream = $repricingstream->getStreamLimit($user);
$last = new Zend_Date($stream);
$last->setTimezone('Europe/Berlin');
$last = $last->get(Zend_Date::TIMESTAMP);
$diff = (($jetzt-$last)/60);
$error->setError(1, 'DIED', $diff, $user);
if($diff > 50 ){
$errCounter++;
$userinfos->setUserFree($user);
$error->setError(1, 'DIED', 'ANSTOSSEN', $user);
}
$counter++;
}
$error->setError(1, $errCounter, 'ANSTOSSEN_ALL', 'ALL');
}
通常$diff >= 0 AND $diff <= 4
,但是,我们发现,它$diff
总是大约381595
. 如果我们将它从 cron$diff
中运行出来,那么它应该是这样的。我们还发现,$jetzt
现在(应该如此)只是$last
晚得多。381595
之后。但那不应该。最后的流日期是完全正常的。我们无法理解这种行为。Zend_Date 与 cron。Bevor2012-10-21 23:59:03
脚本运行 2 周,因为它应该。我们无法解释,怎么会。你能?