@@ -127,9 +127,10 @@ private function moreInfo(array $servers): string {
127127 private function getAllKeys ($ memcached ): array {
128128 $ keys = [];
129129
130- foreach ($ memcached ->getKeys () as $ key ) {
130+ foreach ($ memcached ->getKeys () as $ key_data ) {
131131 $ keys [] = [
132- 'key ' => $ key ,
132+ 'key ' => $ key_data ['key ' ],
133+ 'ttl ' => $ key_data ['exp ' ],
133134 'type ' => 'string ' , // In Memcache(d) everything is stored as string.
134135 ];
135136 }
@@ -153,8 +154,8 @@ private function mainDashboard($memcached): string {
153154 'keys ' => $ paginator ->getPaginated (),
154155 'all_keys ' => count ($ keys ),
155156 'new_key_url ' => Http::queryString ([], ['form ' => 'new ' ]),
156- 'edit_url ' => Http::queryString ([], ['form ' => 'edit ' , 'key ' => '' ]),
157- 'view_url ' => Http::queryString ([], ['view ' => 'key ' , 'key ' => '' ]),
157+ 'edit_url ' => Http::queryString ([], ['form ' => 'edit ' , 'ttl ' => ' ttl_value ' , ' key ' => '' ]),
158+ 'view_url ' => Http::queryString ([], ['view ' => 'key ' , 'ttl ' => ' ttl_value ' , ' key ' => '' ]),
158159 'paginator ' => $ paginator ->render (),
159160 ]);
160161 }
@@ -177,12 +178,15 @@ private function viewKey($memcached): string {
177178
178179 [$ value , $ encode_fn , $ is_formatted ] = Helpers::decodeAndFormatValue ($ value );
179180
181+ $ ttl = Http::get ('ttl ' , 'int ' );
182+
180183 return $ this ->template ->render ('partials/view_key ' , [
181184 'value ' => $ value ,
182185 'type ' => 'string ' , // In Memcache(d) everything is stored as string.
186+ 'ttl ' => !empty ($ ttl ) ? Helpers::formatSeconds ($ ttl ) : null ,
183187 'encode_fn ' => $ encode_fn ,
184188 'formatted ' => $ is_formatted ,
185- 'edit_url ' => Http::queryString (['db ' ], ['form ' => 'edit ' , 'key ' => $ key ]),
189+ 'edit_url ' => Http::queryString (['ttl ' ], ['form ' => 'edit ' , 'key ' => $ key ]),
186190 ]);
187191 }
188192
@@ -196,17 +200,21 @@ private function viewKey($memcached): string {
196200 private function form ($ memcached ): string {
197201 $ key = Http::get ('key ' );
198202 $ value = '' ;
203+ $ expire = 0 ;
199204
200205 $ encoder = Http::get ('encoder ' );
201206 $ encoder = !empty ($ encoder ) ? $ encoder : 'none ' ;
202207
203208 if (isset ($ _GET ['key ' ]) && $ memcached ->get ($ key )) {
204209 $ value = $ memcached ->get ($ key );
210+ $ expire = Http::get ('ttl ' , 'int ' );
211+ $ expire = $ expire === -1 ? 0 : $ expire ;
205212 }
206213
207214 if (isset ($ _POST ['submit ' ])) {
208215 $ key = Http::post ('key ' );
209216 $ value = Http::post ('value ' );
217+ $ expire = Http::post ('expire ' , 'int ' );
210218 $ old_key = Http::post ('old_key ' );
211219 $ encoder = Http::post ('encoder ' );
212220
@@ -218,9 +226,9 @@ private function form($memcached): string {
218226 $ memcached ->delete ($ old_key );
219227 }
220228
221- $ memcached ->set ($ key , $ value );
229+ $ memcached ->store ($ key , $ value, $ expire );
222230
223- Http::redirect ([], ['view ' => 'key ' , 'key ' => $ key ]);
231+ Http::redirect ([], ['view ' => 'key ' , 'ttl ' => $ expire , ' key ' => $ key ]);
224232 }
225233
226234 if ($ encoder !== 'none ' ) {
@@ -230,6 +238,7 @@ private function form($memcached): string {
230238 return $ this ->template ->render ('dashboards/memcached/form ' , [
231239 'key ' => $ key ,
232240 'value ' => $ value ,
241+ 'expire ' => $ expire ,
233242 'encoders ' => Helpers::getEncoders (),
234243 'encoder ' => $ encoder ,
235244 ]);
0 commit comments