<?php

// @codingStandardsIgnoreStart
use xmvc\Encoder;

$type = I('type');
$key = I('key', '');
$prefix = SITE_GUID . '_';
if ($type == 'view' && $key != '') {
    dd(apcu_fetch($key));
} elseif ($type == 'delete' && $key != '') {
    apcu_delete($key);
    header('Location: ' . url('xmvc/core/cmd-apcu'));
} elseif ($type == 'clearProject') {
    $data = apcu_cache_info();
    foreach ($data['cache_list'] as $v) {
        if (substr($v['info'], 0, strlen($prefix)) === $prefix) {
            apcu_delete($v['info']);
        }
    }
    header('Location: ' . url('xmvc/core/cmd-apcu'));
} elseif ($type == 'clearAll') {
    apcu_clear_cache();
    header('Location: ' . url('xmvc/core/cmd-apcu'));
}
$mem = apcu_sma_info();
$data = apcu_cache_info();
$info = [
    "当前项目网址" => HTTP_HOST,
    "当前项目前缀" => $prefix,
    "开始运行时间" => date('Y-m-d H:i:s', $data['start_time']),
    "总配置内存" => formatBytes($mem['seg_size']),
    "总可用内存" => formatBytes($mem['avail_mem']),
    "已使用内存" => formatBytes($data['mem_size']),
    "剩余大小" => formatBytes($mem['avail_mem'] - $data['mem_size']),
];
//排序, 相同站点放在一起
uasort($data['cache_list'], function ($a, $b) {
    return strcmp($a['info'], $b['info']);
});
foreach ($data['cache_list'] as $k => $v) {
    $v['mem_size'] = formatBytes($v['mem_size']);
    $key = Encoder::encode($v['info']);
    $urlDelete = url('xmvc/core/cmd-apcu', ['type' => 'delete', 'key' => $key]);
    $urlView = url('xmvc/core/cmd-apcu', ['type' => 'view', 'key' => $key]);
    $v = ['Delete' => '<a href="' . $urlDelete . '" onclick="return confirm(\'删除 ' . $v['info'] . ' ?\')">Delete</a>'] + $v;
    $v = ['View' => '<a href="' . $urlView . '" target="_blank">View</a>'] + $v;
    $data['cache_list'][$k] = $v;
}
?>

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charSet="utf-8" />
    <title>APCu UI</title>
</head>

<body>
    <div>
        <?php dump($info); ?>
    </div>
    <div>
        <a href="<?= url('xmvc/core/cmd-apcu', ['type' => 'clearAll']) ?>" onclick="return confirm('确认清空所有缓存?')">清空所有缓存</a>
        <a href="<?= url('xmvc/core/cmd-apcu', ['type' => 'clearProject']) ?>" onclick="return confirm('清空项目缓存?')">清空项目缓存</a>
        &nbsp; &nbsp;
    </div>
    <div>
        <?php dumpTable($data['cache_list']); ?>
    </div>
</body>

</html>
