1 | <?php |
---|
2 | require('init.php'); |
---|
3 | |
---|
4 | htmlHeader(); |
---|
5 | |
---|
6 | // create a client instance and get loadbalancer plugin instance |
---|
7 | $client = new Solarium_Client($config); |
---|
8 | $loadbalancer = $client->getPlugin('loadbalancer'); |
---|
9 | |
---|
10 | // apply loadbalancer settings |
---|
11 | $optionsSolrOne = array('host' => '127.0.0.1', 'port' => 8983); |
---|
12 | $optionsSolrTwo = array('host' => '127.0.0.1', 'port' => 7574); |
---|
13 | $loadbalancer->addServer('solr1', $optionsSolrOne, 100); |
---|
14 | $loadbalancer->addServer('solr2', $optionsSolrTwo, 200); |
---|
15 | $loadbalancer->addServer('solr3', $optionsSolrTwo, 1); |
---|
16 | |
---|
17 | // create a basic query to execute |
---|
18 | $query = $client->createSelect(); |
---|
19 | |
---|
20 | // execute the query multiple times, displaying the server for each execution |
---|
21 | for($i=1; $i<=8; $i++) { |
---|
22 | $resultset = $client->select($query); |
---|
23 | echo 'Query execution #' . $i . '<br/>'; |
---|
24 | echo 'NumFound: ' . $resultset->getNumFound(). '<br/>'; |
---|
25 | echo 'Server: ' . $loadbalancer->getLastServerKey() .'<hr/>'; |
---|
26 | } |
---|
27 | |
---|
28 | // force a server for a query (normally solr 3 is extremely unlikely based on it's weight) |
---|
29 | $loadbalancer->setForcedServerForNextQuery('solr3'); |
---|
30 | $resultset = $client->select($query); |
---|
31 | echo 'Query execution with server forced to solr3<br/>'; |
---|
32 | echo 'NumFound: ' . $resultset->getNumFound(). '<br/>'; |
---|
33 | echo 'Server: ' . $loadbalancer->getLastServerKey() .'<hr/>'; |
---|
34 | |
---|
35 | // test a ping query |
---|
36 | $query = $client->createPing(); |
---|
37 | $client->ping($query); |
---|
38 | echo 'Loadbalanced ping query, should display a loadbalancing server:<br/>'; |
---|
39 | echo 'Ping server: ' . $loadbalancer->getLastServerKey() .'<hr/>'; |
---|
40 | |
---|
41 | // exclude ping query from loadbalancing |
---|
42 | $loadbalancer->addBlockedQueryType(Solarium_Client::QUERYTYPE_PING); |
---|
43 | $client->ping($query); |
---|
44 | echo 'Non-loadbalanced ping query, should not display a loadbalancing server:<br/>'; |
---|
45 | echo 'Ping server: ' . $loadbalancer->getLastServerKey() .'<hr/>'; |
---|
46 | |
---|
47 | htmlFooter(); |
---|