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

CClusterQueue::Run: метод Битрикс

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

<?php 
//    /bitrix/modules/cluster/classes/general/queue.phpCClusterQueue::Run()
//    51:

    
public static function Run()
    {
        global 
$DB;
        
$DB->StartUsingMasterOnly();
        do
        {
            
//read data
            
$ids = array();
            
$queue = array();
            
$rs $DB->Query($DB->TopSql("
                SELECT *
                FROM b_cluster_queue
                WHERE GROUP_ID = "
.BX_CLUSTER_GROUP."
                ORDER BY ID
            "
100));
            while (
$ar $rs->Fetch())
            {
                
$queueKey $ar["COMMAND"]."|".$ar["PARAM1"]."|".$ar["PARAM2"]."|".$ar["PARAM3"];
                
$queue[$queueKey] = $ar;
                
$ids[] = intval($ar["ID"]);
            }

            
$uid CMain::GetServerUniqID()."_cluster_queue_".BX_CLUSTER_GROUP;

            if (!empty(
$ids))
            {
                
$lock $DB->Query("SELECT GET_LOCK('".$uid."', 0) as L")->Fetch();
                if (
$lock["L"] == "0")
                {
                    
$DB->StopUsingMasterOnly();
                    return 
false;
                }
            }

            
//clean cache
            
foreach ($queue as $ar)
            {
                
$class_name $ar["COMMAND"];
                if (
class_exists($class_name))
                {
                    
$object = new $class_name;
                    
$object->QueueRun(
                        
CClusterQueue::UnQuoteParam($ar["PARAM1"]),
                        
CClusterQueue::UnQuoteParam($ar["PARAM2"]),
                        
CClusterQueue::UnQuoteParam($ar["PARAM3"])
                    );
                }
            }

            
//mark as done
            
if ($ids)
            {
                
$DB->Query("DELETE FROM b_cluster_queue WHERE ID in (".implode(","$ids).")");
                
$DB->Query("SELECT RELEASE_LOCK('".$uid."')");
            }
        }
        while (
$queue);
        
$DB->StopUsingMasterOnly();
    }

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

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

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

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

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

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

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

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