PageRenderTime 42ms CodeModel.GetById 21ms RepoModel.GetById 1ms app.codeStats 0ms

/commands.php

http://phpmemcacheadmin.googlecode.com/
PHP | 357 lines | 237 code | 19 blank | 101 comment | 30 complexity | 12838330e53be8105fb2ffb053aae13f MD5 | raw file
  1. <?php
  2. /**
  3. * Copyright 2010 Cyrille Mahieux
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and limitations
  14. * under the License.
  15. *
  16. * ><)))°> ><)))°> ><)))°> ><)))°> ><)))°> ><)))°> ><)))°> ><)))°> ><)))°>
  17. *
  18. * Executing commands
  19. *
  20. * @author c.mahieux@of2m.fr
  21. * @since 06/04/2010
  22. */
  23. # Headers
  24. header('Content-type: text/html;');
  25. header('Cache-Control: no-cache, must-revalidate');
  26. # Require
  27. require_once 'Library/Loader.php';
  28. # Date timezone
  29. date_default_timezone_set('Europe/Paris');
  30. # Loading ini file
  31. $_ini = Library_Configuration_Loader::singleton();
  32. # Initializing requests & response
  33. $request = (isset($_GET['request_command'])) ? $_GET['request_command'] : null;
  34. # Starting
  35. ob_start();
  36. # Display by request rype
  37. switch($request)
  38. {
  39. # Memcache::get command
  40. case 'get':
  41. # Ask for get on a cluster
  42. if(isset($_GET['request_server']) && ($cluster = $_ini->cluster($_GET['request_server'])))
  43. {
  44. foreach($cluster as $server)
  45. {
  46. # Dumping server get command response
  47. echo Library_HTML_Components::serverResponse($server['hostname'], $server['port'],
  48. Library_Command_Factory::api($_GET['request_api'])->get($server['hostname'], $server['port'], $_GET['request_key']));
  49. }
  50. }
  51. # Ask for get on one server
  52. elseif(isset($_GET['request_server']) && ($server = $_ini->server($_GET['request_server'])))
  53. {
  54. # Dumping server get command response
  55. echo Library_HTML_Components::serverResponse($server['hostname'], $server['port'],
  56. Library_Command_Factory::api($_GET['request_api'])->get($server['hostname'], $server['port'], $_GET['request_key']));
  57. }
  58. # Ask for get on all servers
  59. else
  60. {
  61. foreach($_ini->get('servers') as $cluster => $servers)
  62. {
  63. # Asking for each server stats
  64. foreach($servers as $server)
  65. {
  66. # Dumping server get command response
  67. echo Library_HTML_Components::serverResponse($server['hostname'], $server['port'],
  68. Library_Command_Factory::api($_GET['request_api'])->get($server['hostname'], $server['port'], $_GET['request_key']));
  69. }
  70. }
  71. }
  72. break;
  73. # Memcache::set command
  74. case 'set':
  75. # Ask for set on a cluster
  76. if(isset($_GET['request_server']) && ($cluster = $_ini->cluster($_GET['request_server'])))
  77. {
  78. foreach($cluster as $server)
  79. {
  80. # Dumping server get command response
  81. echo Library_HTML_Components::serverResponse($server['hostname'], $server['port'],
  82. Library_Command_Factory::api($_GET['request_api'])->set($server['hostname'], $server['port'], $_GET['request_key'], $_GET['request_data'], $_GET['request_duration']));
  83. }
  84. }
  85. # Ask for set on one server
  86. elseif(isset($_GET['request_server']) && ($server = $_ini->server($_GET['request_server'])))
  87. {
  88. # Dumping server set command response
  89. echo Library_HTML_Components::serverResponse($server['hostname'], $server['port'],
  90. Library_Command_Factory::api($_GET['request_api'])->set($server['hostname'], $server['port'], $_GET['request_key'], $_GET['request_data'], $_GET['request_duration']));
  91. }
  92. # Ask for set on all servers
  93. else
  94. {
  95. foreach($_ini->get('servers') as $cluster => $servers)
  96. {
  97. # Asking for each server stats
  98. foreach($servers as $server)
  99. {
  100. # Dumping server set command response
  101. echo Library_HTML_Components::serverResponse($server['hostname'], $server['port'],
  102. Library_Command_Factory::api($_GET['request_api'])->set($server['hostname'], $server['port'], $_GET['request_key'], $_GET['request_data'], $_GET['request_duration']));
  103. }
  104. }
  105. }
  106. break;
  107. # Memcache::delete command
  108. case 'delete':
  109. # Ask for delete on a cluster
  110. if(isset($_GET['request_server']) && ($cluster = $_ini->cluster($_GET['request_server'])))
  111. {
  112. foreach($cluster as $server)
  113. {
  114. # Dumping server get command response
  115. echo Library_HTML_Components::serverResponse($server['hostname'], $server['port'],
  116. Library_Command_Factory::api($_GET['request_api'])->delete($server['hostname'], $server['port'], $_GET['request_key']));
  117. }
  118. }
  119. # Ask for delete on one server
  120. elseif(isset($_GET['request_server']) && ($server = $_ini->server($_GET['request_server'])))
  121. {
  122. # Dumping server delete command response
  123. echo Library_HTML_Components::serverResponse($server['hostname'], $server['port'],
  124. Library_Command_Factory::api($_GET['request_api'])->delete($server['hostname'], $server['port'], $_GET['request_key']));
  125. }
  126. # Ask for delete on all servers
  127. else
  128. {
  129. foreach($_ini->get('servers') as $cluster => $servers)
  130. {
  131. # Asking for each server stats
  132. foreach($servers as $server)
  133. {
  134. # Dumping server delete command response
  135. echo Library_HTML_Components::serverResponse($server['hostname'], $server['port'],
  136. Library_Command_Factory::api($_GET['request_api'])->delete($server['hostname'], $server['port'], $_GET['request_key']));
  137. }
  138. }
  139. }
  140. break;
  141. # Memcache::increment command
  142. case 'increment':
  143. # Checking value
  144. if(!isset($_GET['request_value']) || !is_numeric($_GET['request_value']))
  145. {
  146. $_GET['request_value'] = 1;
  147. }
  148. # Ask for increment on a cluster
  149. if(isset($_GET['request_server']) && ($cluster = $_ini->cluster($_GET['request_server'])))
  150. {
  151. foreach($cluster as $server)
  152. {
  153. # Dumping server increment command response
  154. echo Library_HTML_Components::serverResponse($server['hostname'], $server['port'],
  155. Library_Command_Factory::api($_GET['request_api'])->increment($server['hostname'], $server['port'], $_GET['request_key'], $_GET['request_value']));
  156. }
  157. }
  158. # Ask for increment on one server
  159. elseif(isset($_GET['request_server']) && ($server = $_ini->server($_GET['request_server'])))
  160. {
  161. # Dumping server increment command response
  162. echo Library_HTML_Components::serverResponse($server['hostname'], $server['port'],
  163. Library_Command_Factory::api($_GET['request_api'])->increment($server['hostname'], $server['port'], $_GET['request_key'], $_GET['request_value']));
  164. }
  165. # Ask for increment on all servers
  166. else
  167. {
  168. foreach($_ini->get('servers') as $cluster => $servers)
  169. {
  170. # Asking for each server stats
  171. foreach($servers as $server)
  172. {
  173. # Dumping server increment command response
  174. echo Library_HTML_Components::serverResponse($server['hostname'], $server['port'],
  175. Library_Command_Factory::api($_GET['request_api'])->increment($server['hostname'], $server['port'], $_GET['request_key'], $_GET['request_value']));
  176. }
  177. }
  178. }
  179. break;
  180. # Memcache::decrement command
  181. case 'decrement':
  182. # Checking value
  183. if(!isset($_GET['request_value']) || !is_numeric($_GET['request_value']))
  184. {
  185. $_GET['request_value'] = 1;
  186. }
  187. # Ask for decrement on a cluster
  188. if(isset($_GET['request_server']) && ($cluster = $_ini->cluster($_GET['request_server'])))
  189. {
  190. foreach($cluster as $server)
  191. {
  192. # Dumping server decrement command response
  193. echo Library_HTML_Components::serverResponse($server['hostname'], $server['port'],
  194. Library_Command_Factory::api($_GET['request_api'])->decrement($server['hostname'], $server['port'], $_GET['request_key'], $_GET['request_value']));
  195. }
  196. }
  197. # Ask for decrement on one server
  198. elseif(isset($_GET['request_server']) && ($server = $_ini->server($_GET['request_server'])))
  199. {
  200. # Dumping server decrement command response
  201. echo Library_HTML_Components::serverResponse($server['hostname'], $server['port'],
  202. Library_Command_Factory::api($_GET['request_api'])->decrement($server['hostname'], $server['port'], $_GET['request_key'], $_GET['request_value']));
  203. }
  204. # Ask for decrement on all servers
  205. else
  206. {
  207. foreach($_ini->get('servers') as $cluster => $servers)
  208. {
  209. # Asking for each server stats
  210. foreach($servers as $server)
  211. {
  212. # Dumping server decrement command response
  213. echo Library_HTML_Components::serverResponse($server['hostname'], $server['port'],
  214. Library_Command_Factory::api($_GET['request_api'])->decrement($server['hostname'], $server['port'], $_GET['request_key'], $_GET['request_value']));
  215. }
  216. }
  217. }
  218. break;
  219. # Memcache::flush_all command
  220. case 'flush_all':
  221. # Checking delay
  222. if(!isset($_GET['request_delay']) || !is_numeric($_GET['request_delay']))
  223. {
  224. $_GET['request_delay'] = 0;
  225. }
  226. # Ask for flush_all on a cluster
  227. if(isset($_GET['request_server']) && ($cluster = $_ini->cluster($_GET['request_server'])))
  228. {
  229. foreach($cluster as $server)
  230. {
  231. # Dumping server get command response
  232. echo Library_HTML_Components::serverResponse($server['hostname'], $server['port'],
  233. Library_Command_Factory::api($_GET['request_api'])->flush_all($server['hostname'], $server['port'], $_GET['request_delay']));
  234. }
  235. }
  236. # Ask for flush_all on one server
  237. elseif(isset($_GET['request_server']) && ($server = $_ini->server($_GET['request_server'])))
  238. {
  239. # Dumping server flush_all command response
  240. echo Library_HTML_Components::serverResponse($server['hostname'], $server['port'],
  241. Library_Command_Factory::api($_GET['request_api'])->flush_all($server['hostname'], $server['port'], $_GET['request_delay']));
  242. }
  243. # Ask for flush_all on all servers
  244. else
  245. {
  246. foreach($_ini->get('servers') as $cluster => $servers)
  247. {
  248. # Asking for each server stats
  249. foreach($servers as $server)
  250. {
  251. # Dumping server flush_all command response
  252. echo Library_HTML_Components::serverResponse($server['hostname'], $server['port'],
  253. Library_Command_Factory::api($_GET['request_api'])->flush_all($server['hostname'], $server['port'], $_GET['request_delay']));
  254. }
  255. }
  256. }
  257. break;
  258. # Memcache::search command
  259. case 'search':
  260. # Ask for flush_all on a cluster
  261. if(isset($_GET['request_server']) && ($cluster = $_ini->cluster($_GET['request_server'])))
  262. {
  263. foreach($cluster as $server)
  264. {
  265. # Dumping server get command response
  266. echo Library_HTML_Components::serverResponse($server['hostname'], $server['port'],
  267. Library_Command_Factory::api('Server')->search($server['hostname'], $server['port'], $_GET['request_key']));
  268. }
  269. }
  270. # Ask for search on one server
  271. elseif(isset($_GET['request_server']) && ($server = $_ini->server($_GET['request_server'])))
  272. {
  273. # Dumping server search command response
  274. echo Library_HTML_Components::serverResponse($server['hostname'], $server['port'],
  275. Library_Command_Factory::api('Server')->search($server['hostname'], $server['port'], $_GET['request_key']));
  276. }
  277. # Ask for search on all servers
  278. else
  279. {
  280. # Looking into each cluster
  281. foreach($_ini->get('servers') as $cluster => $servers)
  282. {
  283. # Asking for each server stats
  284. foreach($servers as $server)
  285. {
  286. # Dumping server search command response
  287. echo Library_HTML_Components::serverResponse($server['hostname'], $server['port'],
  288. Library_Command_Factory::api('Server')->search($server['hostname'], $server['port'], $_GET['request_key']));
  289. }
  290. }
  291. }
  292. break;
  293. # Memcache::telnet command
  294. case 'telnet':
  295. # Ask for a telnet command on a cluster
  296. if(isset($_GET['request_server']) && ($cluster = $_ini->cluster($_GET['request_server'])))
  297. {
  298. foreach($cluster as $server)
  299. {
  300. # Dumping server telnet command response
  301. echo Library_HTML_Components::serverResponse($server['hostname'], $server['port'],
  302. Library_Command_Factory::api('Server')->telnet($server['hostname'], $server['port'], $_GET['request_telnet']));
  303. }
  304. }
  305. # Ask for a telnet command on one server
  306. elseif(isset($_GET['request_server']) && ($server = $_ini->server($_GET['request_server'])))
  307. {
  308. # Dumping server telnet command response
  309. echo Library_HTML_Components::serverResponse($server['hostname'], $server['port'],
  310. Library_Command_Factory::api('Server')->telnet($server['hostname'], $server['port'], $_GET['request_telnet']));
  311. }
  312. # Ask for a telnet command on all servers
  313. else
  314. {
  315. # Looking into each cluster
  316. foreach($_ini->get('servers') as $cluster => $servers)
  317. {
  318. # Asking for each server stats
  319. foreach($servers as $server)
  320. {
  321. # Dumping server telnet command response
  322. echo Library_HTML_Components::serverResponse($server['hostname'], $server['port'],
  323. Library_Command_Factory::api('Server')->telnet($server['hostname'], $server['port'], $_GET['request_telnet']));
  324. }
  325. }
  326. }
  327. break;
  328. # Default : No command
  329. default :
  330. # Showing header
  331. include 'View/Header.tpl';
  332. # Showing formulary
  333. include 'View/Commands/Commands.tpl';
  334. # Showing footer
  335. include 'View/Footer.tpl';
  336. break;
  337. }
  338. ob_end_flush();