예제 #1
0
function getCacheInfos()
{
    static $cacheInfos;
    if (isset($cacheInfos)) {
        return $cacheInfos;
    }
    $phpCacheCount = xcache_count(XC_TYPE_PHP);
    $varCacheCount = xcache_count(XC_TYPE_VAR);
    $cacheInfos = array();
    $total = array();
    global $maxHitsByHour;
    $maxHitsByHour = array(0, 0);
    for ($i = 0; $i < $phpCacheCount; $i++) {
        $data = xcache_info(XC_TYPE_PHP, $i);
        if ($_GET['do'] === 'listphp') {
            $data += xcache_list(XC_TYPE_PHP, $i);
        }
        $data['type'] = XC_TYPE_PHP;
        $data['cache_name'] = "php#{$i}";
        $data['cacheid'] = $i;
        $cacheInfos[] = $data;
        $maxHitsByHour[XC_TYPE_PHP] = max($maxHitsByHour[XC_TYPE_PHP], max($data['hits_by_hour']));
        if ($phpCacheCount >= 2) {
            calc_total($total, $data);
        }
    }
    if ($phpCacheCount >= 2) {
        $total['type'] = XC_TYPE_PHP;
        $total['cache_name'] = _T('Total');
        $total['cacheid'] = -1;
        $total['gc'] = null;
        $total['istotal'] = true;
        unset($total['compiling']);
        $cacheInfos[] = $total;
    }
    $total = array();
    for ($i = 0; $i < $varCacheCount; $i++) {
        $data = xcache_info(XC_TYPE_VAR, $i);
        if ($_GET['do'] === 'listvar') {
            $data += xcache_list(XC_TYPE_VAR, $i);
        }
        $data['type'] = XC_TYPE_VAR;
        $data['cache_name'] = "var#{$i}";
        $data['cacheid'] = $i;
        $cacheInfos[] = $data;
        $maxHitsByHour[XC_TYPE_VAR] = max($maxHitsByHour[XC_TYPE_VAR], max($data['hits_by_hour']));
        if ($varCacheCount >= 2) {
            calc_total($total, $data);
        }
    }
    if ($varCacheCount >= 2) {
        $total['type'] = XC_TYPE_VAR;
        $total['cache_name'] = _T('Total');
        $total['cacheid'] = -1;
        $total['gc'] = null;
        $total['istotal'] = true;
        $cacheInfos[] = $total;
    }
    return $cacheInfos;
}
예제 #2
0
<?php

// Settings
$excludes_order = array('detail');
$includes_order = array('/\\d{5,8}(_big)?(_p\\d+)?\\.', '/waren', '/kaberen', '/moeren', '/kabeura', '/moeura');
$deselects = array('this-one-needs-duplicate');
$normal_depth = isset($_GET['depth']) ? intval($_GET['depth']) : 2;
if (!isset($_GET['file'])) {
    select_file();
} elseif (isset($_POST['generate'])) {
    generate_new_list();
} elseif (isset($_GET['calctotal'])) {
    calc_total();
} else {
    dupselect_ui();
}
function proper_size($size, $maxcnt = 0)
{
    $suffix = '';
    $suxAry = array("KB", "MB", "GB", "TB");
    $ccnt = $maxcnt ? $maxcnt : count($suxAry);
    for ($cnt = 0; $cnt < $ccnt; $cnt++) {
        if ($size > 1024) {
            $size /= 1024;
            $suffix = $suxAry[$cnt];
        }
    }
    return $suffix ? sprintf("%.1f", $size) . $suffix : $size . 'B';
}
function countchar($str, $chr)
{
예제 #3
0
/**
 * 计算客服的顾客回购率
 */
function repo_rate()
{
    $filter['role_id'] = isset($_REQUEST['platform']) && !empty($_REQUEST['platform']) ? intval($_REQUEST['platform']) : 0;
    $filter['admin_id'] = isset($_REQUEST['admin_id']) && !empty($_REQUEST['admin_id']) ? intval($_REQUEST['admin_id']) : 0;
    $ex_where = '';
    // 按部门 获取需要计算回购率的客服
    // 中老年、会员部 客服列表
    if (admin_priv('personal_repo_all', '', false)) {
        // 部门
        $ex_where = $filter['role_id'] ? " AND u.role_id={$filter['role_id']} " : ' AND u.role_id IN (' . OFFLINE_SALE . ') ';
        // 客服
        $ex_where .= $filter['admin_id'] ? " AND u.admin_id={$filter['admin_id']} " : '';
    } elseif (admin_priv('personal_repo_part', '', false)) {
        // 所属部门客服
        if (admin_priv('personal_repo_trans-part', '', false)) {
            $trans_role_list = trans_part_list();
            $admin_list = admin_list_by_role($trans_role_list);
            if ($admin_list === false) {
                $admin_list = get_admin_tmp_list($_SESSION['role_id']);
            }
            $ex_where = ' AND u.role_id IN (' . implode(',', $trans_role_list) . ')';
        } else {
            $admin_list = get_admin_tmp_list($_SESSION['role_id']);
            $ex_where = " AND u.role_id={$_SESSION['role_id']} ";
        }
        // 个人
        $ex_where .= $filter['admin_id'] ? " AND u.admin_id={$filter['admin_id']} " : '';
    } elseif (admin_priv('personal_repo_row', '', false)) {
        // 所属小组客服
        // 小组
    } else {
        // 客服
        $_REQUEST['admin_id'] = $_SESSION['admin_id'];
        $admin_list[$_SESSION['admin_id']] = $_SESSION['admin_name'];
        $ex_where = " AND u.admin_id={$_SESSION['admin_id']} ";
    }
    // 时间
    if (empty($_REQUEST['start_time']) || empty($_REQUEST['end_time'])) {
        $filter['start_time'] = date('Y-m-01 00:00:00');
        $filter['end_time'] = date('Y-m-t 23:59:59');
    } else {
        $filter['start_time'] = trim($_REQUEST['start_time']);
        $filter['end_time'] = trim($_REQUEST['end_time']);
    }
    $time_limit = ' AND i.add_time BETWEEN ' . strtotime($filter['start_time']) . ' AND ' . strtotime($filter['end_time']);
    // 取该段时间之前的有过购买记录的顾客
    $before_time = ' AND i.user_id IN (SELECT user_id FROM ' . $GLOBALS['ecs']->table('order_info') . ' WHERE order_status IN (1,5) AND shipping_status IN (0,1,2) AND team<>23 AND final_amount>0 AND team>0 AND add_time<' . strtotime($filter['start_time']) . ')';
    $sql_select = 'SELECT SUM(i.final_amount) purchases_amount,COUNT(i.order_id) purchases_number,u.admin_id,u.admin_name,u.user_id FROM ' . $GLOBALS['ecs']->table('users') . ' u,' . $GLOBALS['ecs']->table('order_info') . ' i WHERE i.order_status IN (1,5) AND i.shipping_status IN (0,1,2) AND i.team<>23 ' . ' AND u.user_id=i.user_id AND i.final_amount>0 AND i.team>0 AND u.admin_id>0 ';
    $owner_order = 'AND i.admin_id=u.admin_id AND i.order_type=4 ';
    $group_by = ' GROUP BY i.user_id';
    $having_count = ' HAVING COUNT(order_id)>1 ';
    // 获取老顾客当期的有效订单
    $repo_list = $GLOBALS['db']->getAll($sql_select . $owner_order . $ex_where . $time_limit . $before_time . $group_by);
    $calc_repo_current = calc_total($repo_list);
    // 获取当期所有的有效订单
    $purchases = $GLOBALS['db']->getAll($sql_select . $owner_order . $ex_where . $time_limit . $group_by);
    $calc_total_current = calc_total($purchases);
    // 获取所有老顾客的订单总量
    $repo_total_list = $GLOBALS['db']->getAll($sql_select . $ex_where . $group_by . $having_count);
    $calc_repo_total = calc_total($repo_total_list);
    // 获取顾客所有有效订单
    $purchases_total = $GLOBALS['db']->getAll($sql_select . $ex_where . $group_by);
    $calc_total_all = calc_total($purchases_total);
    // 统计每位客服的顾客数量
    //$sql_select = 'SELECT COUNT(DISTINCT user_id) users_number, admin_id, admin_name FROM '.
    //$GLOBALS['ecs']->table('users').' WHERE admin_id>0 AND customer_type IN (2,3,4,5,11) AND role_id<>23 GROUP BY admin_id';
    $sql_select = 'SELECT COUNT(DISTINCT user_id) users_number, admin_id, admin_name FROM ' . $GLOBALS['ecs']->table('users') . ' u WHERE u.admin_id>0 AND u.customer_type NOT IN(5,6,7,21) AND u.user_id IN (SELECT user_id FROM ' . $GLOBALS['ecs']->table('order_info') . ' WHERE order_status IN (1,5) AND shipping_status IN (0,1,2) AND team<>23 AND final_amount>0 AND order_type IN (3,4,5,6,7))';
    $users_number = $GLOBALS['db']->getAll($sql_select . $ex_where . ' GROUP BY admin_id');
    $users_list = array();
    $users_total = 0;
    foreach ($users_number as $val) {
        $users_list[$val['admin_id']] = $val;
        $users_total += $val['users_number'];
    }
    // 计算每位客服的顾客回购率
    $merge_data = array();
    foreach ($calc_total_all as $key => $val) {
        // 全部订单
        @($merge_data[$key]['total_all_users_number'] = $val['users_number']);
        @($merge_data[$key]['total_all_order_number'] = $val['order_number']);
        @($merge_data[$key]['total_all_order_amount'] = $val['order_amount']);
        // 当期所有订单
        @($merge_data[$key]['total_current_users_number'] = $calc_total_current[$key]['users_number']);
        @($merge_data[$key]['total_current_order_number'] = $calc_total_current[$key]['order_number']);
        @($merge_data[$key]['total_current_order_amount'] = $calc_total_current[$key]['order_amount']);
        // 老顾客所有订单
        @($merge_data[$key]['repo_total_users_number'] = $calc_repo_total[$key]['users_number']);
        @($merge_data[$key]['repo_total_order_number'] = $calc_repo_total[$key]['order_number']);
        @($merge_data[$key]['repo_total_order_amount'] = $calc_repo_total[$key]['order_amount']);
        // 老顾客当期订单
        @($merge_data[$key]['repo_current_users_number'] = $calc_repo_current[$key]['users_number']);
        @($merge_data[$key]['repo_current_order_number'] = $calc_repo_current[$key]['order_number']);
        @($merge_data[$key]['repo_current_order_amount'] = $calc_repo_current[$key]['order_amount']);
        @($merge_data[$key]['admin_name'] = $users_list[$key]['admin_name']);
        @($merge_data[$key]['users_number'] = $users_list[$key]['users_number']);
    }
    unset($key, $val);
    // 计算百分比
    foreach ($merge_data as $key => &$val) {
        // 老顾客占顾客总量
        @($val['users_current_old_vs_total'] = sprintf('%.2f%%', bcdiv($val['repo_current_users_number'], $val['users_number'], 4) * 100));
        // 订单金额比 当期
        @($val['order_current_old_vs_total'] = sprintf('%.2f%%', bcdiv($val['repo_current_order_amount'], $val['total_all_order_amount'], 4) * 100));
        // 顾客数量比
        @($val['users_old_vs_total'] = sprintf('%.2f%%', bcdiv($val['repo_total_users_number'], $val['users_number'], 4) * 100));
        // 订单数量比
        @($val['order_number_old_vs_total'] = sprintf('%.2f%%', bcdiv($val['repo_total_order_number'], $val['total_all_order_number'], 4) * 100));
        // 订单金额比 所有的订单
        @($val['order_amount_old_vs_total'] = sprintf('%.2f%%', bcdiv($val['repo_total_order_amount'], $val['total_all_order_amount'], 4) * 100));
    }
    @($merge_data['total']['admin_name'] = '总计');
    @($merge_data['total']['users_number'] = $users_total);
    @($merge_data['total']['users_old_vs_total'] = sprintf('%.2f%%', bcdiv($merge_data['total']['repo_total_users_number'], $users_total, 4) * 100));
    @($merge_data['total']['users_current_old_vs_total'] = sprintf('%.2f%%', bcdiv($merge_data['total']['repo_current_users_number'], $users_total, 4) * 100));
    krsort($merge_data);
    return $merge_data;
}