123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- <?php
- require_once 'includes/common.inc.php';
- // Export to redis-cli commands
- function export_redis($key)
- {
- global $redis;
- $type = $redis->type($key);
- // String
- if ($type == 'string') {
- echo 'SET "', addslashes($key), '" "', addslashes($redis->get($key)), '"', PHP_EOL;
- }
- // Hash
- else if ($type == 'hash') {
- $values = $redis->hGetAll($key);
- foreach ($values as $k => $v) {
- echo 'HSET "', addslashes($key), '" "', addslashes($k), '" "', addslashes($v), '"', PHP_EOL;
- }
- }
- // List
- else if ($type == 'list') {
- $size = $redis->lLen($key);
- for ($i = 0; $i < $size; ++$i) {
- echo 'RPUSH "', addslashes($key), '" "', addslashes($redis->lIndex($key, $i)), '"', PHP_EOL;
- }
- }
- // Set
- else if ($type == 'set') {
- $values = $redis->sMembers($key);
- foreach ($values as $v) {
- echo 'SADD "', addslashes($key), '" "', addslashes($v), '"', PHP_EOL;
- }
- }
- // ZSet
- else if ($type == 'zset') {
- $values = $redis->zRange($key, 0, -1);
- foreach ($values as $v) {
- $s = $redis->zScore($key, $v);
- echo 'ZADD "', addslashes($key), '" ', $s, ' "', addslashes($v), '"', PHP_EOL;
- }
- }
- }
- // Return the JSON for this key
- function export_json($key)
- {
- global $redis;
- $type = $redis->type($key);
- // String
- if ($type == 'string') {
- $value = $redis->get($key);
- }
- // Hash
- else if ($type == 'hash') {
- $value = $redis->hGetAll($key);
- }
- // List
- else if ($type == 'list') {
- $size = $redis->lLen($key);
- $value = array();
- for ($i = 0; $i < $size; ++$i) {
- $value[] = $redis->lIndex($key, $i);
- }
- }
- // Set
- else if ($type == 'set') {
- $value = $redis->sMembers($key);
- }
- // ZSet
- else if ($type == 'zset') {
- $value = $redis->zRange($key, 0, -1);
- }
- return $value;
- }
- // Export
- if (isset($_POST['type'])) {
- if ($_POST['type'] == 'json') {
- $ext = 'js';
- $ct = 'application/json';
- } else {
- $ext = 'redis';
- $ct = 'text/plain';
- }
- header('Content-type: ' . $ct . '; charset=utf-8');
- if (isset($_POST['tofile']) && strtolower($_POST['tofile']) == 'on') {
- header('Content-Disposition: attachment; filename="export.' . $ext . '"');
- } else {
- header('Content-Disposition: inline; filename="export.' . $ext . '"');
- }
- // JSON
- if ($_POST['type'] == 'json') {
- // Single key
- if (isset($_GET['key'])) {
- echo json_encode(export_json($_GET['key']));
- } else { // All keys
- $keys = $redis->keys('*');
- $vals = array();
- foreach ($keys as $key) {
- $vals[$key] = export_json($key);
- }
- echo json_encode($vals);
- }
- }
- // Redis Commands
- else {
- // Single key
- if (isset($_GET['key'])) {
- export_redis($_GET['key']);
- } else { // All keys
- $keys = $redis->keys('*');
- foreach ($keys as $key) {
- export_redis($key);
- }
- }
- }
- die;
- }
- $page['css'][] = 'frame';
- $page['js'][] = 'frame';
- require 'includes/header.inc.php';
- ?>
- <h2>Export <?php echo isset($_GET['key']) ? format_html($_GET['key']) : '' ?></h2>
- <form action="<?php echo format_html($_SERVER['REQUEST_URI']) ?>" method="post">
- <p>
- <label for="type">Type:</label>
- <select name="type" id="type">
- <option value="redis" <?php echo (isset($_GET['type']) && ($_GET['type'] == 'redis')) ? 'selected="selected"' : '' ?>>Redis</option>
- <option value="json" <?php echo (isset($_GET['type']) && ($_GET['type'] == 'json' )) ? 'selected="selected"' : '' ?>>JSON</option>
- </select>
- </p>
- <p>
- <input type="submit" class="button" value="Export"> <input type="checkbox" name="tofile" value="ON" /> to file
- </p>
- </form>
- <?php
- require 'includes/footer.inc.php';
- ?>
|