1C-Bitrix
25.700.0
Загрузка...
Поиск...
Не найдено
queue.php
См. документацию.
1
<?php
2
IncludeModuleLangFile
(__FILE__);
3
4
class
CClusterQueue
5
{
6
public
static
function
Add
($group_id, $command, $param1, $param2, $param3)
7
{
8
global
$DB
;
9
10
$sql_group_id =
"'"
. intval($group_id) .
"'"
;
11
$sql_command =
"'"
.
$DB
->ForSql($command, 50) .
"'"
;
12
$sql_param1 =
CClusterQueue::QuoteParam
($param1);
13
$sql_param2 =
CClusterQueue::QuoteParam
($param2);
14
$sql_param3 =
CClusterQueue::QuoteParam
($param3);
15
$DB
->StartUsingMasterOnly();
16
$DB
->Query(
'
17
INSERT INTO b_cluster_queue (
18
TIMESTAMP_X, GROUP_ID, COMMAND, PARAM1, PARAM2, PARAM3
19
) values (
20
'
.
$DB
->CurrentTimeFunction() .
', '
. $sql_group_id .
', '
. $sql_command .
', '
. $sql_param1 .
', '
. $sql_param2 .
', '
. $sql_param3 .
'
21
)
22
'
);
23
$DB
->StopUsingMasterOnly();
24
}
25
26
public
static
function
QuoteParam
(
$str
)
27
{
28
global
$DB
;
29
30
if
(is_bool(
$str
))
31
{
32
return
"'b:"
. (
$str
===
true
?
't'
:
'f'
) .
"'"
;
33
}
34
elseif
(is_string(
$str
))
35
{
36
return
"'s:"
.
$DB
->ForSql(
$str
, 250) .
"'"
;
37
}
38
else
39
{
40
return
'null'
;
41
}
42
}
43
44
public
static
function
UnQuoteParam
(
$str
)
45
{
46
if
(
$str <>
''
)
47
{
48
$prefix = mb_substr(
$str
, 0, 2);
49
if
($prefix ===
's:'
)
50
{
51
return
mb_substr(
$str
, 2);
52
}
53
if
($prefix ===
'b:'
)
54
{
55
return
mb_substr(
$str
, 2) ===
't'
;
56
}
57
}
58
return
null
;
59
}
60
61
public
static
function
Run()
62
{
63
$pool =
\Bitrix\Main\Application::getInstance
()->getConnectionPool();
64
/* @var \Bitrix\Main\DB\Connection $connection */
65
$connection
= $pool->getConnection();
66
$pool->useMasterOnly(
true
);
67
do
68
{
69
//read data
70
$ids = [];
71
$queue = [];
72
$rs
=
$connection
->query(
'
73
SELECT *
74
FROM b_cluster_queue
75
WHERE GROUP_ID = '
. constant(
'BX_CLUSTER_GROUP'
) .
'
76
ORDER BY ID
77
'
, 100);
78
while
(
$ar
=
$rs
->fetch())
79
{
80
$queueKey =
$ar
[
'COMMAND'
] .
'|'
.
$ar
[
'PARAM1'
] .
'|'
.
$ar
[
'PARAM2'
] .
'|'
.
$ar
[
'PARAM3'
];
81
$queue[$queueKey] =
$ar
;
82
$ids[] = intval(
$ar
[
'ID'
]);
83
}
84
85
$uid
=
$connection
->getDatabase() .
'_cluster_queue_'
. constant(
'BX_CLUSTER_GROUP'
);
86
87
if
($ids)
88
{
89
if
(!
$connection
->lock(
$uid
))
90
{
91
$pool->useMasterOnly(
false
);
92
return
false
;
93
}
94
}
95
96
//clean cache
97
foreach
($queue as
$ar
)
98
{
99
$class_name =
$ar
[
'COMMAND'
];
100
if
(class_exists($class_name))
101
{
103
$object =
new
$class_name;
104
$object->QueueRun(
105
CClusterQueue::UnQuoteParam
(
$ar
[
'PARAM1'
]),
106
CClusterQueue::UnQuoteParam
(
$ar
[
'PARAM2'
]),
107
CClusterQueue::UnQuoteParam
(
$ar
[
'PARAM3'
])
108
);
109
}
110
}
111
112
//mark as done
113
if
($ids)
114
{
115
$connection
->query(
'DELETE FROM b_cluster_queue WHERE ID in ('
. implode(
','
, $ids) .
')'
);
116
$connection
->unlock(
$uid
);
117
}
118
}
119
while
($queue);
120
$pool->useMasterOnly(
false
);
121
}
122
}
$connection
$connection
Определения
actionsdefinitions.php:38
Bitrix\Main\Application\getInstance
static getInstance()
Определения
application.php:98
CClusterQueue
Определения
queue.php:5
CClusterQueue\UnQuoteParam
static UnQuoteParam($str)
Определения
queue.php:44
CClusterQueue\Add
static Add($group_id, $command, $param1, $param2, $param3)
Определения
queue.php:6
CClusterQueue\QuoteParam
static QuoteParam($str)
Определения
queue.php:26
$str
$str
Определения
commerceml2.php:63
$uid
$uid
Определения
hot_keys_act.php:8
$DB
global $DB
Определения
cron_frame.php:29
IncludeModuleLangFile
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
Определения
tools.php:3778
elseif
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения
prolog_main_admin.php:393
$ar
$ar
Определения
options.php:199
$rs
$rs
Определения
action.php:82
bitrix
modules
cluster
classes
general
queue.php
Создано системой
1.14.0