Поддержка серверов

CSecuritySessionMC::read: метод Битрикс

Постоянная ссылка: http://bxapi.ru/src/?id=175538

//    CSecuritySessionMC::read()
//    /bitrix/modules/security/classes/general/session_mc.php:58

    public static function read($id)
    {
        if(!self::isConnected() || !self::isValidId($id))
            return "";

        $sid = self::getPrefix();

        if (!self::$isReadOnly)
        {
            $lockTimeout = 55;//TODO: add setting
            $lockWait = 59000000;//micro seconds = 60 seconds TODO: add setting
            $waitStep = 100;

            if (defined('BX_SECURITY_SESSION_MEMCACHE_EXLOCK') && BX_SECURITY_SESSION_MEMCACHE_EXLOCK)
                $lock = Bitrix\Main\Context::getCurrent()->getRequest()->getRequestedPage();
            else
                $lock = 1;

            while(!self::$connection->add($sid.$id.".lock", $lock, 0, $lockTimeout))
            {
                if(self::$connection->increment($sid.$id.".lock", 1) === 1)
                {
                    self::$connection->replace($sid.$id.".lock", $lock, 0, $lockTimeout);
                    break;
                }
                usleep($waitStep);
                $lockWait -= $waitStep;
                if($lockWait < 0)
                {
                    $errorText = 'Unable to get session lock within 60 seconds.';
                    if ($lock !== 1)
                    {
                        $lockedUri = self::$connection->get($sid.$id.".lock");
                        if ($lockedUri && $lockedUri != 1)
                            $errorText .= sprintf(' Locked by "%s".', $lockedUri);
                    }

                    CSecuritySession::triggerFatalError($errorText);
                }

                if($waitStep < 1000000)
                    $waitStep *= 2;
            }
        }

        self::$sessionId = $id;
        self::$isSessionReady = true;
        $res = self::$connection->get($sid.$id);
        if($res === false)
            $res = "";

        return $res;
    }
';

Блог разработчика

9 августа 2016 ResizeImageGet и простой водяной знак налету

Сегодня поговорим о том как проще всего воткнуть водяной знак на картинки в Битрикс. Например, на все изображения каталога.

21 июля 2016 Добавление вкладки в CRM коробки Битрикс24

В этом посте я покажу, как легко и просто добавить вкладку в сущность CRM. И не просто добавить, а вывести там свой контент.

21 июля 2016 Как просто обращаться из коробки Битрикс24 на сайт на базе Битрикс

К примеру вам хочется внутренним скриптом дернуть с сайта-магазина информацию, которая там, в свою очередь, закрыта некоторыми правами. Например, админскими. Можно конечно мутить свой REST, или иной формат общения, но проще всего воспользоваться штатным инструментом:

Текст сообщения*
Загрузить изображение