MediaWiki
1.34.4
mcc.php
Go to the documentation of this file.
1
<?php
25
$optionsWithArgs
= [
'cache'
];
26
$optionsWithoutArgs
= [
27
'debug'
,
'help'
28
];
29
require_once __DIR__ .
'/commandLine.inc'
;
30
31
$debug
= isset( $options[
'debug'
] );
32
$help
= isset( $options[
'help'
] );
33
$cache
= $options[
'cache'
] ??
null
;
34
35
if
(
$help
) {
36
mccShowUsage
();
37
exit( 0 );
38
}
39
$mcc
=
new
MemcachedClient
( [
40
'persistent'
=>
true
,
41
'debug'
=>
$debug
,
42
] );
43
44
if
(
$cache
) {
45
if
( !isset(
$wgObjectCaches
[
$cache
] ) ) {
46
print
"MediaWiki isn't configured with a cache named '$cache'"
;
47
exit( 1 );
48
}
49
$servers =
$wgObjectCaches
[
$cache
][
'servers'
];
50
} elseif (
$wgMainCacheType
===
CACHE_MEMCACHED
) {
51
$mcc
->set_servers(
$wgMemCachedServers
);
52
} elseif ( isset(
$wgObjectCaches
[
$wgMainCacheType
][
'servers'
] ) ) {
53
$mcc
->set_servers(
$wgObjectCaches
[
$wgMainCacheType
][
'servers'
] );
54
}
else
{
55
print
"MediaWiki isn't configured for Memcached usage\n"
;
56
exit( 1 );
57
}
58
62
function
mccShowUsage
() {
63
echo <<<EOF
64
Usage:
65
mcc.php [--debug]
66
mcc.php --help
67
68
MemCached Command (mcc) is an interactive command tool that let you interact
69
with the
MediaWiki
memcached cache.
70
71
Options:
72
--debug Set debug mode on the memcached connection.
73
--help This help screen.
74
75
Interactive commands:
76
77
EOF;
78
print
"\t"
;
79
print
str_replace(
"\n"
,
"\n\t"
,
mccGetHelp
(
false
) );
80
print
"\n"
;
81
}
82
83
function
mccGetHelp
(
$command
) {
84
$output =
''
;
85
$commandList = [
86
'get'
=>
'grabs something'
,
87
'getsock'
=>
'lists sockets'
,
88
'set'
=>
'changes something'
,
89
'delete'
=>
'deletes something'
,
90
'history'
=>
'show command line history'
,
91
'server'
=>
'show current memcached server'
,
92
'dumpmcc'
=>
'shows the whole thing'
,
93
'exit'
=>
'exit mcc'
,
94
'quit'
=>
'exit mcc'
,
95
'help'
=>
'help about a command'
,
96
];
97
if
( !
$command
) {
98
$command
=
'fullhelp'
;
99
}
100
if
(
$command
===
'fullhelp'
) {
101
$max_cmd_len = max( array_map(
'strlen'
, array_keys( $commandList ) ) );
102
foreach
( $commandList as $cmd => $desc ) {
103
$output .= sprintf(
"%-{$max_cmd_len}s: %s\n"
, $cmd, $desc );
104
}
105
} elseif ( isset( $commandList[
$command
] ) ) {
106
$output .=
"$command: $commandList[$command]\n"
;
107
}
else
{
108
$output .=
"$command: command does not exist or no help for it\n"
;
109
}
110
111
return
$output;
112
}
113
114
do
{
115
$bad =
false
;
116
$showhelp
=
false
;
117
$quit
=
false
;
118
119
$line
=
Maintenance::readconsole
();
120
if
(
$line
===
false
) {
121
exit;
122
}
123
124
$args
= explode(
' '
,
$line
);
125
$command
= array_shift(
$args
);
126
127
// process command
128
switch
(
$command
) {
129
case
'help'
:
130
// show an help message
131
print
mccGetHelp
( array_shift(
$args
) );
132
break
;
133
134
case
'get'
:
135
$sub =
''
;
136
if
( array_key_exists( 1,
$args
) ) {
137
$sub =
$args
[1];
138
}
139
print
"Getting {$args[0]}[$sub]\n"
;
140
$res
=
$mcc
->get(
$args
[0] );
141
if
( array_key_exists( 1,
$args
) ) {
142
$res
=
$res
[
$args
[1]];
143
}
144
if
(
$res
===
false
) {
145
# print 'Error: ' . $mcc->error_string() . "\n";
146
print
"MemCached error\n"
;
147
} elseif ( is_string(
$res
) ) {
148
print
"$res\n"
;
149
}
else
{
150
var_dump(
$res
);
151
}
152
break
;
153
154
case
'getsock'
:
155
$res
=
$mcc
->get(
$args
[0] );
156
$sock =
$mcc
->get_sock(
$args
[0] );
157
var_dump( $sock );
158
break
;
159
160
case
'server'
:
161
if
(
$mcc
->_single_sock !==
null
) {
162
print
$mcc
->_single_sock .
"\n"
;
163
break
;
164
}
165
$res
=
$mcc
->get(
$args
[0] );
166
$hv =
$mcc
->_hashfunc(
$args
[0] );
167
for
( $i = 0; $i < 3; $i++ ) {
168
print
$mcc
->_buckets[$hv %
$mcc
->_bucketcount] .
"\n"
;
169
$hv +=
$mcc
->_hashfunc( $i .
$args
[0] );
170
}
171
break
;
172
173
case
'set'
:
174
$key = array_shift(
$args
);
175
if
(
$args
[0] ==
"#"
&& is_numeric(
$args
[1] ) ) {
176
$value = str_repeat(
'*'
,
$args
[1] );
177
}
else
{
178
$value = implode(
' '
,
$args
);
179
}
180
if
( !
$mcc
->set( $key, $value, 0 ) ) {
181
# print 'Error: ' . $mcc->error_string() . "\n";
182
print
"MemCached error\n"
;
183
}
184
break
;
185
186
case
'delete'
:
187
$key = implode(
' '
,
$args
);
188
if
( !
$mcc
->delete( $key ) ) {
189
# print 'Error: ' . $mcc->error_string() . "\n";
190
print
"MemCached error\n"
;
191
}
192
break
;
193
194
case
'history'
:
195
if
( function_exists(
'readline_list_history'
) ) {
196
foreach
( readline_list_history() as $num =>
$line
) {
197
print
"$num: $line\n"
;
198
}
199
}
else
{
200
print
"readline_list_history() not available\n"
;
201
}
202
break
;
203
204
case
'dumpmcc'
:
205
var_dump(
$mcc
);
206
break
;
207
208
case
'quit'
:
209
case
'exit'
:
210
$quit
=
true
;
211
break
;
212
213
default
:
214
$bad =
true
;
215
}
// switch() end
216
217
if
( $bad ) {
218
if
(
$command
) {
219
print
"Bad command\n"
;
220
}
221
}
else
{
222
if
( function_exists(
'readline_add_history'
) ) {
223
readline_add_history(
$line
);
224
}
225
}
226
}
while
( !
$quit
);
$wgMemCachedServers
$wgMemCachedServers
The list of MemCached servers and port numbers.
Definition:
DefaultSettings.php:2580
$optionsWithArgs
$optionsWithArgs
Definition:
mcc.php:25
Maintenance\readconsole
static readconsole( $prompt='> ')
Prompt the console for input.
Definition:
Maintenance.php:1609
CACHE_MEMCACHED
const CACHE_MEMCACHED
Definition:
Defines.php:93
$res
$res
Definition:
testCompression.php:52
$mcc
if( $help) $mcc
Definition:
mcc.php:39
MemcachedClient
memcached client class implemented using (p)fsockopen()
Definition:
MemcachedClient.php:79
$debug
$debug
Definition:
mcc.php:31
$wgMainCacheType
$wgMainCacheType
Main cache type.
Definition:
DefaultSettings.php:2366
MediaWiki
This class serves as a utility class for this extension.
$wgObjectCaches
$wgObjectCaches
Advanced object cache configuration.
Definition:
DefaultSettings.php:2414
$args
if( $line===false) $args
Definition:
mcc.php:124
mccShowUsage
mccShowUsage()
Show this command line tool usage.
Definition:
mcc.php:62
$line
$line
Definition:
mcc.php:119
print
print
Definition:
opensearch_desc.php:47
$command
$command
Definition:
mcc.php:125
$cache
$cache
Definition:
mcc.php:33
mccGetHelp
mccGetHelp( $command)
Definition:
mcc.php:83
$quit
$quit
Definition:
mcc.php:117
$showhelp
$showhelp
Definition:
mcc.php:116
$help
$help
Definition:
mcc.php:32
$optionsWithoutArgs
$optionsWithoutArgs
Definition:
mcc.php:26
maintenance
mcc.php
Generated on Thu Sep 24 2020 22:30:55 for MediaWiki by
1.8.18