Many interface improvements, optimizations

This commit is contained in:
RainLoop Team 2014-05-07 20:04:32 +04:00
parent 40d2548a53
commit 53dc509d79
42 changed files with 686 additions and 461 deletions

View file

@ -827,34 +827,34 @@ class Utils
/**
* @staticvar bool $bValidateAction
*
* @param int &$iTimer
* @param int $iTimeToReset = 15
* @param int $iTimeToAdd = 120
*
* @return bool
*/
public static function ResetTimeLimit(&$iTimer, $iTimeToReset = 15, $iTimeToAdd = 120)
public static function ResetTimeLimit($iTimeToReset = 15, $iTimeToAdd = 120)
{
static $bValidateAction = null;
static $iResetTimer = null;
if (null === $bValidateAction)
{
$iResetTimer = 0;
$sSafeMode = \strtolower(\trim(@\ini_get('safe_mode')));
$bSafeMode = 'on' === $sSafeMode || '1' === $sSafeMode || 'true' === $sSafeMode;
$bValidateAction = !$bSafeMode && \MailSo\Base\Utils::FunctionExistsAndEnabled('set_time_limit');
}
if ($bValidateAction)
if ($bValidateAction && $iTimeToReset < \time() - $iResetTimer)
{
$iTime = \time();
if ($iTimeToReset < $iTime - $iTimer)
{
$iTimer = $iTime;
\set_time_limit($iTimeToAdd);
}
$iResetTimer = \time();
\set_time_limit($iTimeToAdd);
return true;
}
return $bValidateAction;
return false;
}
/**
@ -1347,7 +1347,6 @@ class Utils
*/
public static function FpassthruWithTimeLimitReset($fResource, $iBufferLen = 8192)
{
$iTimer = 0;
$bResult = false;
if (\is_resource($fResource))
{
@ -1357,7 +1356,7 @@ class Utils
if (false !== $sBuffer)
{
echo $sBuffer;
\MailSo\Base\Utils::ResetTimeLimit($iTimer);
\MailSo\Base\Utils::ResetTimeLimit();
continue;
}
@ -1382,7 +1381,6 @@ class Utils
*/
public static function MultipleStreamWriter($rRead, $aWrite, $iBufferLen = 8192, $bResetTimeLimit = true, $bFixCrLf = false, $bRewindOnComplete = false)
{
$iTimer = 0;
$mResult = false;
if ($rRead && \is_array($aWrite) && 0 < \count($aWrite))
{
@ -1420,7 +1418,7 @@ class Utils
if ($bResetTimeLimit)
{
\MailSo\Base\Utils::ResetTimeLimit($iTimer);
\MailSo\Base\Utils::ResetTimeLimit();
}
}
}

View file

@ -1788,7 +1788,7 @@ class ImapClient extends \MailSo\Net\NetClient
$bIsClosingBracketSquare = false;
$iLiteralLen = 0;
$iBufferEndIndex = 0;
$iTimer = 0;
$iDebugCount = 0;
$rImapLiteralStream = null;
@ -1810,6 +1810,12 @@ class ImapClient extends \MailSo\Net\NetClient
while (!$bIsEndOfList)
{
$iDebugCount++;
if (100000 === $iDebugCount)
{
$this->Logger()->Write('PartialParseOver: '.$iDebugCount, \MailSo\Log\Enumerations\Type::ERROR);
}
if ($this->bNeedNext)
{
$iPos = 0;
@ -1854,7 +1860,7 @@ class ImapClient extends \MailSo\Net\NetClient
$sLiteral .= $sAddRead;
$iRead -= \strlen($sAddRead);
\MailSo\Base\Utils::ResetTimeLimit($iTimer);
\MailSo\Base\Utils::ResetTimeLimit();
}
if (false !== $sLiteral)
@ -2203,6 +2209,11 @@ class ImapClient extends \MailSo\Net\NetClient
$this->iResponseBufParsedPos = 0;
}
if (100000 < $iDebugCount)
{
$this->Logger()->Write('PartialParseOverResult: '.$iDebugCount, \MailSo\Log\Enumerations\Type::ERROR);
}
return $bTreatAsAtom ? $sAtomBuilder : $aList;
}
@ -2249,14 +2260,13 @@ class ImapClient extends \MailSo\Net\NetClient
\call_user_func($this->aFetchCallbacks[$sFetchKey],
$sParent, $sLiteralAtomUpperCase, $rImapLiteralStream);
$iTimer = 0;
$iNotReadLiteralLen = 0;
while (!\feof($rImapLiteralStream))
{
$sBuf = \fread($rImapLiteralStream, 8192);
if (false !== $sBuf)
{
\MailSo\Base\Utils::ResetTimeLimit($iTimer);
\MailSo\Base\Utils::ResetTimeLimit();
$iNotReadLiteralLen += \strlen($sBuf);
continue;
}

View file

@ -403,7 +403,6 @@ class SmtpClient extends \MailSo\Net\NetClient
$this->writeLog('Message data.', \MailSo\Log\Enumerations\Type::NOTE);
$iTimer = 0;
while (!\feof($rDataStream))
{
$sBuffer = \fgets($rDataStream);
@ -416,7 +415,7 @@ class SmtpClient extends \MailSo\Net\NetClient
$this->sendRaw(\rtrim($sBuffer, "\r\n"), false);
\MailSo\Base\Utils::ResetTimeLimit($iTimer);
\MailSo\Base\Utils::ResetTimeLimit();
continue;
}
else if (!\feof($rDataStream))