mirror of
https://gitee.com/ulthon/ulthon_admin.git
synced 2026-07-06 10:02:49 +08:00
feat: 增加call类型的定时任务;
This commit is contained in:
@@ -6,24 +6,52 @@ use app\common\model\VirtualModel;
|
||||
|
||||
class TimerServiceBase
|
||||
{
|
||||
public static function generateAllRequestList()
|
||||
protected $taskList = null;
|
||||
|
||||
public static function generateAllTaskInstanceList()
|
||||
{
|
||||
$config_list = include app_file_path('common/command/timer/config.php');
|
||||
$request_list = [];
|
||||
$task_list = [];
|
||||
foreach ($config_list as $config_item) {
|
||||
$config_item = static::initConfigItem($config_item);
|
||||
|
||||
if ($config_item['name'] == 'http_demo' && !env('adminsystem.is_demo', false)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$request_list = array_merge($request_list, static::generateRequestListFromConfig($config_item));
|
||||
$task_list = array_merge($task_list, static::generateTaskInstanceFromConfig($config_item));
|
||||
}
|
||||
|
||||
return $task_list;
|
||||
}
|
||||
|
||||
public function generateAllRequestList()
|
||||
{
|
||||
if ($this->taskList === null) {
|
||||
$this->taskList = static::generateAllTaskInstanceList();
|
||||
}
|
||||
|
||||
$request_list = array_filter($this->taskList, function ($item) {
|
||||
return $item['type'] == 'site';
|
||||
});
|
||||
|
||||
return $request_list;
|
||||
}
|
||||
|
||||
public static function generateRequestListFromConfig($config_item)
|
||||
public function generateAllCallList()
|
||||
{
|
||||
if ($this->taskList === null) {
|
||||
$this->taskList = static::generateAllTaskInstanceList();
|
||||
}
|
||||
|
||||
$request_list = array_filter($this->taskList, function ($item) {
|
||||
return $item['type'] == 'call';
|
||||
});
|
||||
|
||||
return $request_list;
|
||||
}
|
||||
|
||||
public static function generateTaskInstanceFromConfig($config_item)
|
||||
{
|
||||
$config_item = static::initConfigItem($config_item);
|
||||
$request_list = [];
|
||||
$concurrency = $config_item['concurrency'];
|
||||
|
||||
@@ -33,14 +61,19 @@ class TimerServiceBase
|
||||
'concurrency_id' => $i,
|
||||
'concurrency_count' => $concurrency,
|
||||
];
|
||||
$target_info = parse_url($target);
|
||||
$query_params = [];
|
||||
if (isset($target_info['query'])) {
|
||||
parse_str($target_info['query'], $query_params);
|
||||
// 处理target
|
||||
if ($config_item['type'] == 'site') {
|
||||
$target_info = parse_url($target);
|
||||
$query_params = [];
|
||||
if (isset($target_info['query'])) {
|
||||
parse_str($target_info['query'], $query_params);
|
||||
}
|
||||
$query_params = array_merge($query_params, $params);
|
||||
$target_info['query'] = http_build_query($query_params);
|
||||
$target = unparse_url($target_info);
|
||||
} elseif ($config_item['type'] == 'call') {
|
||||
$target = $config_item['target'];
|
||||
}
|
||||
$query_params = array_merge($query_params, $params);
|
||||
$target_info['query'] = http_build_query($query_params);
|
||||
$target = unparse_url($target_info);
|
||||
|
||||
$new_config_item = clone $config_item;
|
||||
$new_config_item['target'] = $target;
|
||||
@@ -48,9 +81,9 @@ class TimerServiceBase
|
||||
|
||||
$request_list[] = $new_config_item;
|
||||
}
|
||||
|
||||
return $request_list;
|
||||
}
|
||||
|
||||
|
||||
public static function initConfigItem($config)
|
||||
{
|
||||
@@ -60,6 +93,7 @@ class TimerServiceBase
|
||||
'target' => '',
|
||||
'frequency' => 600,
|
||||
'concurrency' => 1,
|
||||
'run_type' => 'auto',
|
||||
];
|
||||
|
||||
$data = array_merge($default, $config);
|
||||
|
||||
Reference in New Issue
Block a user