1C-Bitrix
25.700.0
Загрузка...
Поиск...
Не найдено
sync.php
См. документацию.
1
<?php
2
$_SERVER
[
'DOCUMENT_ROOT'
] = realpath(dirname(__FILE__) .
'/../../../..'
);
3
$DOCUMENT_ROOT
=
$_SERVER
[
'DOCUMENT_ROOT'
];
4
5
$childrenCount
= intval($argv[1]);
6
if
(
$childrenCount
<= 0)
7
{
8
die
(
"Specify number of workers\n"
);
9
}
10
11
$mod
=
null
;
12
$children
= [];
13
for
(
$i
= 0;
$i
<
$childrenCount
;
$i
++)
14
{
15
$children
[
$i
] = pcntl_fork();
16
if
(
$children
[
$i
] === 0)
17
{
18
$mod
=
$i
;
19
break
;
20
}
21
elseif
(
$children
[
$i
] < 0)
22
{
23
//TODO finish all spawned children.
24
die
(
"Fork failed.\n"
);
25
}
26
}
27
28
if
(!isset(
$mod
))
29
{
30
while
(pcntl_waitpid(0,
$status
) != -1)
31
{
32
$childStatus = pcntl_wexitstatus(
$status
);
33
echo
'A Child completed with status '
. $childStatus .
"\n"
;
34
foreach
(
$children
as $childPid)
35
{
36
if
($childPid > 0)
37
{
38
echo
'Killing '
. $childPid .
"\n"
;
39
posix_kill($childPid, SIGINT);
40
}
41
}
42
die
(
"Dearest child has died.\n"
);
43
}
44
}
45
else
46
{
47
define(
'NO_KEEP_STATISTIC'
,
true
);
48
define(
'NOT_CHECK_PERMISSIONS'
,
true
);
49
define(
'BX_CRONTAB'
,
true
);
50
define(
'BX_NO_ACCELERATOR_RESET'
,
true
);
51
52
require
$_SERVER
[
'DOCUMENT_ROOT'
] .
'/bitrix/modules/main/include/prolog_before.php'
;
53
while
(@ob_end_clean());
54
@set_time_limit(0);
55
@ignore_user_abort(
true
);
56
echo
"\n"
;
57
58
echo
'Start@'
. date(
'Y-m-d H:i:s'
)
59
.
' pid{'
. getmypid() .
'}'
60
.
' mod{'
.
$mod
.
'}'
61
.
"\n"
;
62
63
if
(!\
Bitrix
\Main\Loader::includeModule(
'clouds'
))
64
{
65
die
(
"Module clouds is not installed.\n"
);
66
}
67
68
$lastId
= 0;
69
$startTime
= date(
'Y-m-d'
);
70
while
(
$startTime
=== date(
'Y-m-d'
))
71
{
72
$taskList =
\Bitrix\Clouds\CopyQueueTable::getList
([
73
'filter'
=> [
74
'=STATUS'
=>
'Y'
,
75
'>ID'
=>
$lastId
,
76
],
77
'limit'
=>
$childrenCount
* 200,
78
'order'
=> [
'ID'
=>
'ASC'
]
79
]);
80
$found =
false
;
81
while
($task = $taskList->fetch())
82
{
83
if
(($task[
'ID'
] %
$childrenCount
) ==
$mod
)
84
{
85
do
86
{
87
$found =
true
;
88
if
($task[
'OP'
] == \
Bitrix
\Clouds\CopyQueueTable::OP_RENAME)
89
{
90
$res
=
CCloudFailover::executeRenameTask
($task);
91
}
92
elseif
($task[
'OP'
] == \
Bitrix
\Clouds\CopyQueueTable::OP_COPY)
93
{
94
$res
=
CCloudFailover::executeCopyTask
($task,
true
);
95
}
96
elseif
($task[
'OP'
] == \
Bitrix
\Clouds\CopyQueueTable::OP_SYNC)
97
{
98
$res
=
CCloudFailover::executeCopyTask
($task,
false
);
99
}
100
else
101
{
102
\Bitrix\Clouds\CopyQueueTable::delete
($task[
'ID'
]);
103
$res
= 0;
104
}
105
106
echo
'task@'
. date(
'Y-m-d H:i:s'
)
107
.
' pid{'
. getmypid() .
'}'
108
.
' mod{'
. sprintf(
'%02d'
,
$mod
) .
'}'
109
.
' '
. $task[
'TIMESTAMP_X'
]->format(
'Y-m-d H:i:s'
)
110
.
' '
. $task[
'OP'
]
111
.
' '
. $task[
'ID'
]
112
.
' '
.
$res
113
.
"\n"
;
114
115
$new
=
\Bitrix\Clouds\CopyQueueTable::getList
([
116
'filter'
=> [
'=ID'
=> $task[
'ID'
]],
117
])->fetch();
118
if
(!
$new
)
119
{
120
break
;
121
}
122
123
if
(
$new
[
'STATUS'
] ===
'N'
)
124
{
125
if
(strpos(
$new
[
'ERROR_MESSAGE'
],
'source file does not exists'
))
126
{
127
\Bitrix\Clouds\CopyQueueTable::delete
(
$new
[
'ID'
]);
128
break
;
129
}
130
}
131
}
132
while
(
$res
===
CCloudFailover::ST_CONTINUE
);
133
}
134
135
$lastId
= $task[
'ID'
];
136
}
137
138
if
(!$found)
139
{
140
$lastId
= 0;
141
$deleteStatus =
$mod
=== 0 ?
CCloudFailover::ST_CONTINUE
:
CCloudFailover::ST_FAILOVER
; # only one worker
142
for
(
$i
= 0;
$i
< 60;
$i
++)
143
{
144
if
($deleteStatus ===
CCloudFailover::ST_CONTINUE
)
145
{
146
$deleteTask =
\Bitrix\Clouds\DeleteQueueTable::getList
([
147
'limit'
=> 1,
148
'order'
=> [
'ID'
=>
'ASC'
]
149
])->fetch();
150
if
($deleteTask)
151
{
152
$deleteStatus =
CCloudFailover::executeDeleteQueue
();
153
echo
'task@'
. date(
'Y-m-d H:i:s'
)
154
.
' pid{'
. getmypid() .
'}'
155
.
' mod{'
. sprintf(
'%02d'
,
$mod
) .
'}'
156
.
' '
. $deleteTask[
'TIMESTAMP_X'
]->format(
'Y-m-d H:i:s'
)
157
.
' D'
158
.
' '
. $deleteTask[
'ID'
]
159
.
' '
. $deleteStatus
160
.
"\n"
;
161
}
162
}
163
sleep(1);
164
}
165
}
166
}
167
}
Bitrix\Main\ORM\Data\DataManager\getList
static getList(array $parameters=array())
Определения
datamanager.php:431
Bitrix\Main\ORM\Data\DataManager\delete
static delete($primary)
Определения
datamanager.php:1644
CCloudFailover\executeDeleteQueue
static executeDeleteQueue()
Определения
failover.php:132
CCloudFailover\executeRenameTask
static executeRenameTask($renameTask)
Определения
failover.php:442
CCloudFailover\ST_FAILOVER
const ST_FAILOVER
Определения
failover.php:8
CCloudFailover\executeCopyTask
static executeCopyTask($copyTask, $overwrite)
Определения
failover.php:219
CCloudFailover\ST_CONTINUE
const ST_CONTINUE
Определения
failover.php:10
$mod
if($childrenCount<=0) $mod
Определения
sync.php:11
$startTime
$startTime
Определения
sync.php:69
$children
$children
Определения
sync.php:12
$childrenCount
$childrenCount
Определения
sync.php:5
$lastId
if(!\Bitrix\Main\Loader::includeModule('clouds')) $lastId
Определения
sync.php:68
$new
$new
Определения
file_edit.php:48
$res
$res
Определения
filter_act.php:7
$DOCUMENT_ROOT
$DOCUMENT_ROOT
Определения
cron_frame.php:10
$_SERVER
$_SERVER["DOCUMENT_ROOT"]
Определения
cron_frame.php:9
$status
$status
Определения
session.php:10
Bitrix
elseif
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения
prolog_main_admin.php:393
die
die
Определения
quickway.php:367
$i
$i
Определения
factura.php:643
bitrix
modules
clouds
tools
sync.php
Создано системой
1.14.0