ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     <?php

$server = new MemcachedServer();

$server->on (Memcached::ON_CONNECT,
             function ($remote_addr) {
                 echo "Incoming connection from {$remote_addr}" . PHP_EOL;
                 return Memcached::RESPONSE_SUCCESS;
             });

$server->on (Memcached::ON_ADD,
             function ($client_id, $key, $value, $flags, $expiration, &$cas) {
                 echo "client_id=[$client_id]: Add key=[$key], value=[$value], flags=[$flags], expiration=[$expiration]" . PHP_EOL;
                 $cas = 15;
                 return Memcached::RESPONSE_SUCCESS;
             });

$server->on (Memcached::ON_APPEND,
             function ($client_id, $key, $value, $cas, &$result_cas) {
                 echo "client_id=[$client_id]: Append key=[$key], value=[$value], cas=[$cas]" . PHP_EOL;
                 return Memcached::RESPONSE_SUCCESS;
             });

$server->on (Memcached::ON_PREPEND,
             function ($client_id, $key, $value, $cas, &$result_cas) {
                 echo "client_id=[$client_id]: Prepend key=[$key], value=[$value], cas=[$cas]" . PHP_EOL;
                 return Memcached::RESPONSE_SUCCESS;
             });

$server->on (Memcached::ON_INCREMENT,
             function ($client_id, $key, $delta, $initial, $expiration, &$result, &$result_cas) {
                 echo "client_id=[$client_id]: Incrementing key=[$key], delta=[$delta], initial=[$initial], expiration=[$expiration]" . PHP_EOL;
                 return Memcached::RESPONSE_SUCCESS;
             });

$server->on (Memcached::ON_DECREMENT,
             function ($client_id, $key, $delta, $initial, $expiration, &$result, &$result_cas) {
                 echo "client_id=[$client_id]: Decrementing key=[$key], delta=[$delta], initial=[$initial], expiration=[$expiration]" . PHP_EOL;
                 return Memcached::RESPONSE_SUCCESS;
             });

$server->on (Memcached::ON_DELETE,
             function ($client_id, $key, $cas) {
                 echo "client_id=[$client_id]: Delete key=[$key], cas=[$cas]" . PHP_EOL;
                 return Memcached::RESPONSE_SUCCESS;
             });

$server->on (Memcached::ON_FLUSH,
             function ($client_id, $when) {
                 echo "client_id=[$client_id]: Flush when=[$when]" . PHP_EOL;
                 return Memcached::RESPONSE_SUCCESS;
             });

$server->on (Memcached::ON_GET,
             function ($client_id, $key, &$value, &$flags, &$cas) {
                 echo "client_id=[$client_id]: Get key=[$key]" . PHP_EOL;
                 $value = "Hello to you client!";
                 return Memcached::RESPONSE_SUCCESS;
             });

$server->on (Memcached::ON_NOOP,
             function ($client_id) {
                 echo "client_id=[$client_id]: Noop" . PHP_EOL;
                 return Memcached::RESPONSE_SUCCESS;
             });

$server->on (Memcached::ON_REPLACE,
             function ($client_id, $key, $value, $flags, $expiration, $cas, &$result_cas) {
                 echo "client_id=[$client_id]: Replace key=[$key], value=[$value], flags=[$flags], expiration=[$expiration], cas=[$cas]" . PHP_EOL;
                 return Memcached::RESPONSE_SUCCESS;
             });
             
$server->on (Memcached::ON_SET,
             function ($client_id, $key, $value, $flags, $expiration, $cas, &$result_cas) {
                 echo "client_id=[$client_id]: Set key=[$key], value=[$value], flags=[$flags], expiration=[$expiration], cas=[$cas]" . PHP_EOL;
                 return Memcached::RESPONSE_SUCCESS;
             });

$server->on (Memcached::ON_STAT,
             function ($client_id, $key, array &$values) {
                echo "client_id=[$client_id]: Stat key=[$key]" . PHP_EOL;
                
                if ($key === "scalar") {
                    $values = "you want it, you get it";
                } elseif ($key === "numeric array") {
                    $values = [-1 => "one", "two", "three"];
                } elseif ($key === "empty") {
                    $values = [];
                } else {
                    $values["key"] = $key;
                    $values["foo"] = "bar";
                }
                return Memcached::RESPONSE_SUCCESS;
             });

$server->on (Memcached::ON_VERSION,
             function ($client_id, &$value) {
                 echo "client_id=[$client_id]: Version" . PHP_EOL;
                 $value = "1.1.1";
                 return Memcached::RESPONSE_SUCCESS;
             });

$server->on (Memcached::ON_QUIT,
             function ($client_id) {
                 echo "client_id=[$client_id]: Client quit" . PHP_EOL;
                 return Memcached::RESPONSE_SUCCESS;
             });

$addr = ($_SERVER['argv'][1] ?? "127.0.0.1:3434");
echo "Listening on $addr" . PHP_EOL;
$server->run($addr);
