Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

--TEST-- RO, user multi, slave removed --SKIPIF-- <?php require_once('skipif.inc'); requir..

Decoded Output download

--TEST--
RO, user multi, slave removed
--SKIPIF--
<?php
require_once('skipif.inc');
require_once("connect.inc");

_skipif_check_extensions(array("mysqli"));
_skipif_connect($emulated_master_host_only, $user, $passwd, $db, $emulated_master_port, $emulated_master_socket);
_skipif_connect($emulated_slave_host_only, $user, $passwd, $db, $emulated_slave_port, $emulated_slave_socket);

include_once("util.inc");
$ret = mst_is_slave_of($emulated_slave_host_only, $emulated_slave_port, $emulated_slave_socket, $emulated_master_host_only, $emulated_master_port, $emulated_master_socket, $user, $passwd, $db);
if (is_string($ret))
	die(sprintf("SKIP Failed to check relation of configured master and slave, %s
", $ret));

if (true == $ret)
	die("SKIP Check config.inc notes! Configured emulated master and emulated slave could be part of a replication cluster
");

$settings = array(
	"myapp" => array(
		'filters'	=> array(
			'user_multi' => array('callback' => 'pick_servers'),
			"random" => array('sticky' => '1'),
		),
		'master' => array($emulated_master_host),
		'slave' => array($emulated_slave_host, $emulated_master_host),
		'lazy_connections' => 0,
	),
);
if ($error = mst_create_config("test_mysqlnd_ms_pick_ro_user_multi_slave_removed.ini", $settings))
	die(sprintf("SKIP %s
", $error));

msg_mysqli_init_emulated_id_skip($emulated_slave_host_only, $user, $passwd, $db, $emulated_slave_port, $emulated_slave_socket, "slave[1,2]");
msg_mysqli_init_emulated_id_skip($emulated_master_host_only, $user, $passwd, $db, $emulated_master_port, $emulated_master_socket, "master");
?>
--INI--
mysqlnd_ms.enable=1
mysqlnd_ms.config_file=test_mysqlnd_ms_pick_ro_user_multi_slave_removed.ini
--FILE--
<?php
	require_once("connect.inc");
	require_once("util.inc");

	function pick_servers($connected_host, $query, $masters, $slaves, $last_used_connection, $in_transaction) {
		static $calls, $last_used;

		printf("pick_server('%s', '%s, '%s', %d, %d)
", $connected_host, $query, $last_used_connection, count($masters), count($slaves));
		printf("-> call %d
", ++$calls);

		if ($last_used && $last_used_connection && ($last_used == $last_used_connection))
			printf("[002] Last used connection has not changed
");
		$last_used = $last_used_connection;

		$servers = array(array(), array());
		foreach ($masters as $k => $master)
			$servers[0][] = $k;

		foreach ($slaves as $k => $slave)
			if ($slave != $last_used_connection)
				$servers[1][] = $k;

		printf("<- %d master, %d slaves
", count($servers[0]), count($servers[1]));

		return $servers;
	}


	if (!$link = mst_mysqli_connect("myapp", $user, $passwd, $db, $port, $socket))
		printf("[001][%d] %s
", mysqli_connect_errno(), mysqli_connect_error());

	if ($res = mst_mysqli_query(3, $link, "SELECT 3 FROM DUAL"))
		var_dump($res->fetch_assoc());

	if ($res = mst_mysqli_query(4, $link, "SELECT 4 FROM DUAL"))
		var_dump($res->fetch_assoc());

	if ($res = mst_mysqli_query(5, $link, "SELECT 5 FROM DUAL"))
		var_dump($res->fetch_assoc());

	if ($res = mst_mysqli_query(6, $link, "SELECT 6 FROM DUAL"))
		var_dump($res->fetch_assoc());

	$last_used = mst_mysqli_get_emulated_id(7, $link);
	if ($res = mst_mysqli_query(8, $link, "SELECT 8 FROM DUAL", MYSQLND_MS_LAST_USED_SWITCH))
		var_dump($res->fetch_assoc());

	$server_id = mst_mysqli_get_emulated_id(9, $link);
	if ($server_id != $last_used)
		printf("[010] Server changed from %s to %s
");

	$last_used = $server_id;

	if ($res = mst_mysqli_query(11, $link, "SELECT 8 FROM DUAL", MYSQLND_MS_LAST_USED_SWITCH))
		var_dump($res->fetch_assoc());

	$server_id = mst_mysqli_get_emulated_id(12, $link);
	if ($server_id != $last_used)
		printf("[013] Server changed from %s to %s
");


	print "done!";
?>
--CLEAN--
<?php
	if (!unlink("test_mysqlnd_ms_pick_ro_user_multi_slave_removed.ini"))
	  printf("[clean] Cannot unlink ini file 'test_mysqlnd_ms_pick_ro_user_multi_slave_removed.ini'.
");
?>
--EXPECTF--
pick_server('myapp', '/*3*/SELECT 3 FROM DUAL, '', 1, 2)
-> call 1
<- 1 master, 2 slaves
array(1) {
  [3]=>
  string(1) "3"
}
pick_server('myapp', '/*4*/SELECT 4 FROM DUAL, '%s', 1, 2)
-> call 2
<- 1 master, 1 slaves
array(1) {
  [4]=>
  string(1) "4"
}
pick_server('myapp', '/*5*/SELECT 5 FROM DUAL, '%s', 1, 2)
-> call 3
<- 1 master, 1 slaves
array(1) {
  [5]=>
  string(1) "5"
}
pick_server('myapp', '/*6*/SELECT 6 FROM DUAL, '%s', 1, 2)
-> call 4
<- 1 master, 1 slaves
array(1) {
  [6]=>
  string(1) "6"
}
pick_server('myapp', '/*ms=last_used*//*7*//*util.inc*/SELECT role FROM _mysqlnd_ms_roles, '%s', 1, 2)
-> call 5
<- 1 master, 1 slaves
pick_server('myapp', '/*ms=last_used*//*8*/SELECT 8 FROM DUAL, '%s', 1, 2)
-> call 6
[002] Last used connection has not changed
<- 1 master, 1 slaves
array(1) {
  [8]=>
  string(1) "8"
}
pick_server('myapp', '/*ms=last_used*//*9*//*util.inc*/SELECT role FROM _mysqlnd_ms_roles, '%s', 1, 2)
-> call 7
[002] Last used connection has not changed
<- 1 master, 1 slaves
pick_server('myapp', '/*ms=last_used*//*11*/SELECT 8 FROM DUAL, '%s', 1, 2)
-> call 8
[002] Last used connection has not changed
<- 1 master, 1 slaves
array(1) {
  [8]=>
  string(1) "8"
}
pick_server('myapp', '/*ms=last_used*//*12*//*util.inc*/SELECT role FROM _mysqlnd_ms_roles, '%s', 1, 2)
-> call 9
[002] Last used connection has not changed
<- 1 master, 1 slaves
done!

Did this file decode correctly?

Original Code

--TEST--
RO, user multi, slave removed
--SKIPIF--
<?php
require_once('skipif.inc');
require_once("connect.inc");

_skipif_check_extensions(array("mysqli"));
_skipif_connect($emulated_master_host_only, $user, $passwd, $db, $emulated_master_port, $emulated_master_socket);
_skipif_connect($emulated_slave_host_only, $user, $passwd, $db, $emulated_slave_port, $emulated_slave_socket);

include_once("util.inc");
$ret = mst_is_slave_of($emulated_slave_host_only, $emulated_slave_port, $emulated_slave_socket, $emulated_master_host_only, $emulated_master_port, $emulated_master_socket, $user, $passwd, $db);
if (is_string($ret))
	die(sprintf("SKIP Failed to check relation of configured master and slave, %s\n", $ret));

if (true == $ret)
	die("SKIP Check config.inc notes! Configured emulated master and emulated slave could be part of a replication cluster\n");

$settings = array(
	"myapp" => array(
		'filters'	=> array(
			'user_multi' => array('callback' => 'pick_servers'),
			"random" => array('sticky' => '1'),
		),
		'master' => array($emulated_master_host),
		'slave' => array($emulated_slave_host, $emulated_master_host),
		'lazy_connections' => 0,
	),
);
if ($error = mst_create_config("test_mysqlnd_ms_pick_ro_user_multi_slave_removed.ini", $settings))
	die(sprintf("SKIP %s\n", $error));

msg_mysqli_init_emulated_id_skip($emulated_slave_host_only, $user, $passwd, $db, $emulated_slave_port, $emulated_slave_socket, "slave[1,2]");
msg_mysqli_init_emulated_id_skip($emulated_master_host_only, $user, $passwd, $db, $emulated_master_port, $emulated_master_socket, "master");
?>
--INI--
mysqlnd_ms.enable=1
mysqlnd_ms.config_file=test_mysqlnd_ms_pick_ro_user_multi_slave_removed.ini
--FILE--
<?php
	require_once("connect.inc");
	require_once("util.inc");

	function pick_servers($connected_host, $query, $masters, $slaves, $last_used_connection, $in_transaction) {
		static $calls, $last_used;

		printf("pick_server('%s', '%s, '%s', %d, %d)\n", $connected_host, $query, $last_used_connection, count($masters), count($slaves));
		printf("-> call %d\n", ++$calls);

		if ($last_used && $last_used_connection && ($last_used == $last_used_connection))
			printf("[002] Last used connection has not changed\n");
		$last_used = $last_used_connection;

		$servers = array(array(), array());
		foreach ($masters as $k => $master)
			$servers[0][] = $k;

		foreach ($slaves as $k => $slave)
			if ($slave != $last_used_connection)
				$servers[1][] = $k;

		printf("<- %d master, %d slaves\n", count($servers[0]), count($servers[1]));

		return $servers;
	}


	if (!$link = mst_mysqli_connect("myapp", $user, $passwd, $db, $port, $socket))
		printf("[001][%d] %s\n", mysqli_connect_errno(), mysqli_connect_error());

	if ($res = mst_mysqli_query(3, $link, "SELECT 3 FROM DUAL"))
		var_dump($res->fetch_assoc());

	if ($res = mst_mysqli_query(4, $link, "SELECT 4 FROM DUAL"))
		var_dump($res->fetch_assoc());

	if ($res = mst_mysqli_query(5, $link, "SELECT 5 FROM DUAL"))
		var_dump($res->fetch_assoc());

	if ($res = mst_mysqli_query(6, $link, "SELECT 6 FROM DUAL"))
		var_dump($res->fetch_assoc());

	$last_used = mst_mysqli_get_emulated_id(7, $link);
	if ($res = mst_mysqli_query(8, $link, "SELECT 8 FROM DUAL", MYSQLND_MS_LAST_USED_SWITCH))
		var_dump($res->fetch_assoc());

	$server_id = mst_mysqli_get_emulated_id(9, $link);
	if ($server_id != $last_used)
		printf("[010] Server changed from %s to %s\n");

	$last_used = $server_id;

	if ($res = mst_mysqli_query(11, $link, "SELECT 8 FROM DUAL", MYSQLND_MS_LAST_USED_SWITCH))
		var_dump($res->fetch_assoc());

	$server_id = mst_mysqli_get_emulated_id(12, $link);
	if ($server_id != $last_used)
		printf("[013] Server changed from %s to %s\n");


	print "done!";
?>
--CLEAN--
<?php
	if (!unlink("test_mysqlnd_ms_pick_ro_user_multi_slave_removed.ini"))
	  printf("[clean] Cannot unlink ini file 'test_mysqlnd_ms_pick_ro_user_multi_slave_removed.ini'.\n");
?>
--EXPECTF--
pick_server('myapp', '/*3*/SELECT 3 FROM DUAL, '', 1, 2)
-> call 1
<- 1 master, 2 slaves
array(1) {
  [3]=>
  string(1) "3"
}
pick_server('myapp', '/*4*/SELECT 4 FROM DUAL, '%s', 1, 2)
-> call 2
<- 1 master, 1 slaves
array(1) {
  [4]=>
  string(1) "4"
}
pick_server('myapp', '/*5*/SELECT 5 FROM DUAL, '%s', 1, 2)
-> call 3
<- 1 master, 1 slaves
array(1) {
  [5]=>
  string(1) "5"
}
pick_server('myapp', '/*6*/SELECT 6 FROM DUAL, '%s', 1, 2)
-> call 4
<- 1 master, 1 slaves
array(1) {
  [6]=>
  string(1) "6"
}
pick_server('myapp', '/*ms=last_used*//*7*//*util.inc*/SELECT role FROM _mysqlnd_ms_roles, '%s', 1, 2)
-> call 5
<- 1 master, 1 slaves
pick_server('myapp', '/*ms=last_used*//*8*/SELECT 8 FROM DUAL, '%s', 1, 2)
-> call 6
[002] Last used connection has not changed
<- 1 master, 1 slaves
array(1) {
  [8]=>
  string(1) "8"
}
pick_server('myapp', '/*ms=last_used*//*9*//*util.inc*/SELECT role FROM _mysqlnd_ms_roles, '%s', 1, 2)
-> call 7
[002] Last used connection has not changed
<- 1 master, 1 slaves
pick_server('myapp', '/*ms=last_used*//*11*/SELECT 8 FROM DUAL, '%s', 1, 2)
-> call 8
[002] Last used connection has not changed
<- 1 master, 1 slaves
array(1) {
  [8]=>
  string(1) "8"
}
pick_server('myapp', '/*ms=last_used*//*12*//*util.inc*/SELECT role FROM _mysqlnd_ms_roles, '%s', 1, 2)
-> call 9
[002] Last used connection has not changed
<- 1 master, 1 slaves
done!

Function Calls

None

Variables

None

Stats

MD5 c7a2b6db48264466607fea9e19e119e7
Eval Count 0
Decode Time 140 ms