コード例 #1
0
ファイル: hbeat.php プロジェクト: sdgdsffdsfff/html-sensor
function update_running_tasks($browser_save, &$runing_items, $task_items)
{
    //检查是否需要清理任务
    $items_del = array_diff_key($runing_items, $task_items);
    if (!empty($items_del)) {
        $names = [];
        foreach ($items_del as $key => $item) {
            unset($runing_items[$key]);
            $names[] = $item['name'];
        }
        omp_trace(implode(',', $names) . ' tasks del');
    }
    //如果对比任务列表并没有发生变化,就不用颁发了
    $new_tasks = array_diff_key($task_items, $runing_items);
    if (empty($new_tasks)) {
        omp_trace('no new tasks');
        return $task_items;
    }
    //逐个分析新出现任务,检查UA相关规则,不符合就不用颁发了
    foreach ($new_tasks as $key => $item) {
        //所谓颁发,就是生成一个初始化的任务数组
        $task_info = array();
        $task_info['name'] = $key;
        $task_info['bypass'] = false;
        $task_info['run_times'] = 0;
        $task_info['last_time'] = 0;
        $task_info['pageviews'] = 0;
        $conf_targets = $item['targets'];
        if (count($conf_targets)) {
            $is_matched = false;
            foreach ($conf_targets as $conf_target) {
                //检查对这个任务的分析结果
                if (targets_matched($conf_targets, $browser_save)) {
                    $is_matched = true;
                    break;
                }
            }
            if (!$is_matched) {
                //不符合条件的,设置一个bypass标志
                $task_info['bypass'] = true;
                omp_trace('pass ' . $item['name']);
            }
        }
        $runing_items[$key] = $task_info;
        omp_trace($key . ' new task');
    }
    return $task_items;
}
コード例 #2
0
ファイル: omp.php プロジェクト: sdgdsffdsfff/web-pusher
function general_match_tasks($list_name, $browser_save, $task_id, &$task_info, $task)
{
    $result = array(false, false);
    $task_print = $task_info['name'] . '(' . $task_info['run_times'] . '/' . $task['times'] . ')';
    //忽略不是自己的任务
    if ($task_info['bypass'] === true) {
        omp_trace($task_print . ' not mine');
        return $result;
    }
    //任务是否被用户停止
    $status = $task['status'];
    if ($status === 'stop') {
        omp_trace($task_print . ' stopped ');
        return $result;
    }
    //判断任务的时间状态
    $task_info['pageviews'] += 1;
    $now = time();
    $run_status = $now < $task['start_time'] ? 'waiting' : ($now > $task['finish_time'] ? 'timeout' : 'running');
    //纠正任务列表中显示的状态
    if ($run_status !== $status) {
        async_timer("/data.php?cmd=status&list={$list_name}&key={$task_id}&val={$run_status}", 10);
    }
    //记录超时
    if ($run_status === 'timeout') {
        omp_trace($task_print . ' expired');
        $result[1] = true;
        return $result;
    }
    //检查是否在时间区间内,否则忽略
    if ($run_status !== 'running') {
        omp_trace($task_print . ' not time rigion ');
        return $result;
    }
    //检查执行次数是否已经达到
    if ($task['times'] !== -1) {
        if ($task_info['run_times'] >= $task['times']) {
            omp_trace($task_print . ' times exceed (' . $task['times'] . ')');
            return $result;
        }
    }
    //详细再查条件
    $matched_target = targets_matched($task['targets'], $browser_save, true);
    if (!$matched_target) {
        omp_trace($task_print . ' target not match');
        return $result;
    }
    $result[0] = true;
    return $result;
}
コード例 #3
0
ファイル: funcs.php プロジェクト: sdgdsffdsfff/html-sensor
function general_match_tasks($browser_save, $task_id, &$task_info, $task)
{
    $result = array(false, false);
    $task_info['pageviews'] += 1;
    $task_print = $task_info['name'] . '(' . $task_info['run_times'] . '/' . $task['times'] . ')';
    //忽略不是自己的任务
    if ($task_info['bypass'] === true) {
        omp_trace($task_print . ' not mine');
        return $result;
    }
    //判读是否过期
    $now = time();
    $run_status = $now < $task['start_time'] ? 'waiting' : ($now > $task['finish_time'] ? 'timeout' : 'running');
    $result[1] = $run_status === 'timeout';
    //任务是否被用户停止
    $status = $task['status'];
    if ($status === 'inactive') {
        omp_trace($task_print . ' inactive');
        return $result;
    }
    //记录超时
    if ($run_status === 'timeout') {
        $task['status'] = 'inactive';
        omp_trace($task_print . ' expired');
        return $result;
    }
    //检查是否在时间区间内,否则忽略
    if ($run_status !== 'running') {
        omp_trace($task_print . ' not time rigion ');
        return $result;
    }
    //检查执行次数是否已经达到
    if ($task['times'] !== -1) {
        if ($task_info['run_times'] >= $task['times']) {
            omp_trace($task_print . ' times exceed (' . $task['times'] . ')');
            return $result;
        }
    }
    //详细再查条件
    $matched_target = targets_matched($task['targets'], $browser_save, true);
    if (!$matched_target) {
        omp_trace($task_print . ' target not match');
        return $result;
    }
    $result[0] = true;
    return $result;
}