/** * * @return void * * @group unit * @test */ public function testTheLock() { $lock = tx_rnbase_util_Lock::getInstance('unttests', 2); // der lock darf initial nicht gesetzt sein (zumindest im testcase) $this->assertFalse($lock->isLocked(), 'Lock was initial active.'); // den prozess sperren $lock->lockProcess(); // der prozess sollte nun gesperrt sein $this->assertTrue($lock->isLocked(), 'Process was not locked.'); // den prozess freigeben $lock->unlockProcess(); // der prozess sollte nun freigegeben sein $this->assertFalse($lock->isLocked(), 'Process was not unlocked.'); // den prozess wieder sperren $lock->lockProcess(); // der prozess ist erneut gesperrt $this->assertTrue($lock->isLocked(), 'Process was not locked again.'); // jetzt warten, bis die lifetime vorüber ist sleep(3); // der prozess sollte nun wieder freigegeben sein $this->assertFalse($lock->isLocked(), 'Process was not unlocked after the lifetime.'); }
/** * Sendout an error mail * @param string $mailAddr commaseperated recipients * @param string $actionName * @param Exception $e * @param array $options */ public static function sendErrorMail($mailAddr, $actionName, Exception $e, array $options = array()) { $ignoreMailLock = array_key_exists('ignoremaillock', $options) && $options['ignoremaillock']; if (!$ignoreMailLock) { tx_rnbase::load('tx_rnbase_util_Lock'); // Only one mail within one minute! $lock = tx_rnbase_util_Lock::getInstance('errormail', 60); if ($lock->isLocked()) { return; } else { $lock->lockProcess(); } } $textPart = self::getErrorMailText($e, $actionName); $htmlPart = self::getErrorMailHtml($e, $actionName); /* @var $mail tx_rnbase_util_Mail */ $mail = tx_rnbase::makeInstance('tx_rnbase_util_Mail'); $mail->setSubject('Exception on site ' . $GLOBALS['TYPO3_CONF_VARS']['SYS']['sitename']); $from = tx_rnbase_configurations::getExtensionCfgValue('rn_base', 'fromEmail'); $from = $from ? $from : 'error@' . tx_rnbase_util_Misc::getIndpEnv('TYPO3_HOST_ONLY'); $mail->setFrom($from); $mail->setTo($mailAddr); $mail->setTextPart($textPart); $mail->setHtmlPart($htmlPart); if ($lock && !$ignoreMailLock) { // refresh the lock $lock->lockProcess(); } return $mail->send(); }