/doc/html/Cassandra_8php_source.html
HTML | 2384 lines | 2375 code | 5 blank | 4 comment | 0 complexity | 1e5381c0376801607401bda9c379acb0 MD5 | raw file
Large files files are truncated, but you can click here to view the full file
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
- <title>Cassandra PHP Client Library: Cassandra.php Source File</title>
- <link href="tabs.css" rel="stylesheet" type="text/css"/>
- <link href="search/search.css" rel="stylesheet" type="text/css"/>
- <script type="text/javascript" src="search/search.js"></script>
- <link href="doxygen.css" rel="stylesheet" type="text/css"/>
- </head>
- <body onload='searchBox.OnSelectItem(0);'>
- <!-- Generated by Doxygen 1.7.3 -->
- <script type="text/javascript"><!--
- var searchBox = new SearchBox("searchBox", "search",false,'Search');
- --></script>
- <script type="text/javascript">
- function hasClass(ele,cls) {
- return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
- }
- function addClass(ele,cls) {
- if (!this.hasClass(ele,cls)) ele.className += " "+cls;
- }
- function removeClass(ele,cls) {
- if (hasClass(ele,cls)) {
- var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
- ele.className=ele.className.replace(reg,' ');
- }
- }
- function toggleVisibility(linkObj) {
- var base = linkObj.getAttribute('id');
- var summary = document.getElementById(base + '-summary');
- var content = document.getElementById(base + '-content');
- var trigger = document.getElementById(base + '-trigger');
- if ( hasClass(linkObj,'closed') ) {
- summary.style.display = 'none';
- content.style.display = 'block';
- trigger.src = 'open.png';
- removeClass(linkObj,'closed');
- addClass(linkObj,'opened');
- } else if ( hasClass(linkObj,'opened') ) {
- summary.style.display = 'block';
- content.style.display = 'none';
- trigger.src = 'closed.png';
- removeClass(linkObj,'opened');
- addClass(linkObj,'closed');
- }
- return false;
- }
- </script>
- <div id="top">
- <div id="titlearea">
- <table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
- <td style="padding-left: 0.5em;">
- <div id="projectname">Cassandra PHP Client Library</div>
- <div id="projectbrief">Cassandra PHP-based client library for managing and querying your Cassandra cluster.</div>
- </td>
- </tr>
- </tbody>
- </table>
- </div>
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- <li id="searchli">
- <div id="MSearchBox" class="MSearchBoxInactive">
- <span class="left">
- <img id="MSearchSelect" src="search/mag_sel.png"
- onmouseover="return searchBox.OnSearchSelectShow()"
- onmouseout="return searchBox.OnSearchSelectHide()"
- alt=""/>
- <input type="text" id="MSearchField" value="Search" accesskey="S"
- onfocus="searchBox.OnSearchFieldFocus(true)"
- onblur="searchBox.OnSearchFieldFocus(false)"
- onkeyup="searchBox.OnSearchFieldChange(event)"/>
- </span><span class="right">
- <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
- </span>
- </div>
- </li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- </ul>
- </div>
- <div class="header">
- <div class="headertitle">
- <h1>Cassandra.php</h1> </div>
- </div>
- <div class="contents">
- <div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <?php
- <a name="l00036"></a>00036 <span class="comment">// set the globals that the thrift library uses</span>
- <a name="l00037"></a>00037 $GLOBALS[<span class="stringliteral">'THRIFT_ROOT'</span>] = dirname(__FILE__) . <span class="stringliteral">'/thrift/'</span>;
- <a name="l00038"></a>00038 define(<span class="stringliteral">'THRIFT_PATH'</span>, $GLOBALS[<span class="stringliteral">'THRIFT_ROOT'</span>]);
- <a name="l00039"></a>00039
- <a name="l00040"></a>00040 <span class="comment">// require thrift packages</span>
- <a name="l00041"></a>00041 require_once $GLOBALS[<span class="stringliteral">'THRIFT_ROOT'</span>].<span class="stringliteral">'/packages/cassandra/Cassandra.php'</span>;
- <a name="l00042"></a>00042 require_once $GLOBALS[<span class="stringliteral">'THRIFT_ROOT'</span>].<span class="stringliteral">'/transport/TSocket.php'</span>;
- <a name="l00043"></a>00043 require_once $GLOBALS[<span class="stringliteral">'THRIFT_ROOT'</span>].<span class="stringliteral">'/protocol/TBinaryProtocol.php'</span>;
- <a name="l00044"></a>00044
- <a name="l00050"></a><a class="code" href="classCassandraConnection.html">00050</a> <span class="keyword">class </span><a class="code" href="classCassandraConnection.html">CassandraConnection</a> {
- <a name="l00051"></a>00051
- <a name="l00057"></a>00057 <span class="keyword">protected</span> $host;
- <a name="l00058"></a>00058
- <a name="l00064"></a>00064 <span class="keyword">protected</span> $port;
- <a name="l00065"></a>00065
- <a name="l00071"></a>00071 <span class="keyword">protected</span> $useFramedTransport;
- <a name="l00072"></a>00072
- <a name="l00078"></a>00078 <span class="keyword">protected</span> $sendTimeoutMs;
- <a name="l00079"></a>00079
- <a name="l00085"></a>00085 <span class="keyword">protected</span> $receiveTimeoutMs;
- <a name="l00086"></a>00086
- <a name="l00092"></a>00092 <span class="keyword">protected</span> $socket;
- <a name="l00093"></a>00093
- <a name="l00099"></a>00099 <span class="keyword">protected</span> $transport;
- <a name="l00100"></a>00100
- <a name="l00106"></a>00106 <span class="keyword">protected</span> $protocol;
- <a name="l00107"></a>00107
- <a name="l00113"></a>00113 <span class="keyword">protected</span> $client;
- <a name="l00114"></a>00114
- <a name="l00120"></a>00120 <span class="keyword">protected</span> $isOpen;
- <a name="l00121"></a>00121
- <a name="l00131"></a><a class="code" href="classCassandraConnection.html#a7f75a298bf9fb6362d38f4aeb42ceb28">00131</a> <span class="keyword">public</span> function <a class="code" href="classCassandraConnection.html#a7f75a298bf9fb6362d38f4aeb42ceb28">__construct</a>(
- <a name="l00132"></a>00132 $host = <span class="stringliteral">'127.0.0.1'</span>,
- <a name="l00133"></a>00133 $port = 9160,
- <a name="l00134"></a>00134 $useFramedTransport = <span class="keyword">true</span>,
- <a name="l00135"></a>00135 $sendTimeoutMs = null,
- <a name="l00136"></a>00136 $receiveTimeoutMs = null
- <a name="l00137"></a>00137 ) {
- <a name="l00138"></a>00138 $this->host = $host;
- <a name="l00139"></a>00139 $this->port = $port;
- <a name="l00140"></a>00140 $this->useFramedTransport = $useFramedTransport;
- <a name="l00141"></a>00141 $this->sendTimeoutMs = $sendTimeoutMs;
- <a name="l00142"></a>00142 $this->receiveTimeoutMs = $receiveTimeoutMs;
- <a name="l00143"></a>00143 $this-><a class="code" href="classCassandraConnection.html#aed004bd39c88a8aea40292f9c5271512">isOpen</a> = <span class="keyword">false</span>;
- <a name="l00144"></a>00144
- <a name="l00145"></a>00145 $this->socket = $this-><a class="code" href="classCassandraConnection.html#a6886c992c6b7cbc24deb801fb8ee52db">createSocket</a>(
- <a name="l00146"></a>00146 $host,
- <a name="l00147"></a>00147 $port,
- <a name="l00148"></a>00148 $sendTimeoutMs,
- <a name="l00149"></a>00149 $receiveTimeoutMs
- <a name="l00150"></a>00150 );
- <a name="l00151"></a>00151
- <a name="l00152"></a>00152 <span class="keywordflow">if</span> ($useFramedTransport) {
- <a name="l00153"></a>00153 $this->transport = $this-><a class="code" href="classCassandraConnection.html#a00c2d10e54028d15cfb5ef8bde3468d3">createFramedTransport</a>($this->socket);
- <a name="l00154"></a>00154 } <span class="keywordflow">else</span> {
- <a name="l00155"></a>00155 $this->transport = $this-><a class="code" href="classCassandraConnection.html#a3e3b2e2318ff07ee56bcae235634c2e4">createBufferedTransport</a>($this->socket);
- <a name="l00156"></a>00156 }
- <a name="l00157"></a>00157
- <a name="l00158"></a>00158 $this->transport->open();
- <a name="l00159"></a>00159 $this-><a class="code" href="classCassandraConnection.html#aed004bd39c88a8aea40292f9c5271512">isOpen</a> = <span class="keyword">true</span>;
- <a name="l00160"></a>00160
- <a name="l00161"></a>00161 $this->protocol = <span class="keyword">new</span> TBinaryProtocolAccelerated($this->transport);
- <a name="l00162"></a>00162 $this->client = <span class="keyword">new</span> CassandraClient($this->protocol);
- <a name="l00163"></a>00163 }
- <a name="l00164"></a>00164
- <a name="l00168"></a><a class="code" href="classCassandraConnection.html#ab491ef3fe8550d70856e708e528cb570">00168</a> <span class="keyword">public</span> function <a class="code" href="classCassandraConnection.html#ab491ef3fe8550d70856e708e528cb570">__destruct</a>() {
- <a name="l00169"></a>00169 $this-><a class="code" href="classCassandraConnection.html#abd8bbd3ef94126f1e6a274b5ad512ece">close</a>();
- <a name="l00170"></a>00170 }
- <a name="l00171"></a>00171
- <a name="l00178"></a><a class="code" href="classCassandraConnection.html#abd8bbd3ef94126f1e6a274b5ad512ece">00178</a> <span class="keyword">public</span> function <a class="code" href="classCassandraConnection.html#abd8bbd3ef94126f1e6a274b5ad512ece">close</a>() {
- <a name="l00179"></a>00179 <span class="keywordflow">if</span> ($this-><a class="code" href="classCassandraConnection.html#aed004bd39c88a8aea40292f9c5271512">isOpen</a>) {
- <a name="l00180"></a>00180 $this->transport->flush();
- <a name="l00181"></a>00181 $this->transport->close();
- <a name="l00182"></a>00182
- <a name="l00183"></a>00183 $this-><a class="code" href="classCassandraConnection.html#aed004bd39c88a8aea40292f9c5271512">isOpen</a> = <span class="keyword">false</span>;
- <a name="l00184"></a>00184 }
- <a name="l00185"></a>00185 }
- <a name="l00186"></a>00186
- <a name="l00192"></a><a class="code" href="classCassandraConnection.html#aed004bd39c88a8aea40292f9c5271512">00192</a> <span class="keyword">public</span> function <a class="code" href="classCassandraConnection.html#aed004bd39c88a8aea40292f9c5271512">isOpen</a>() {
- <a name="l00193"></a>00193 <span class="keywordflow">return</span> $this-><a class="code" href="classCassandraConnection.html#aed004bd39c88a8aea40292f9c5271512">isOpen</a>;
- <a name="l00194"></a>00194 }
- <a name="l00195"></a>00195
- <a name="l00201"></a><a class="code" href="classCassandraConnection.html#a9333243e248f73414e25d5fe143250df">00201</a> <span class="keyword">public</span> function <a class="code" href="classCassandraConnection.html#a9333243e248f73414e25d5fe143250df">getClient</a>() {
- <a name="l00202"></a>00202 <span class="keywordflow">if</span> (!$this-><a class="code" href="classCassandraConnection.html#aed004bd39c88a8aea40292f9c5271512">isOpen</a>) {
- <a name="l00203"></a>00203 <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code" href="classCassandraConnectionClosedException.html">CassandraConnectionClosedException</a>(
- <a name="l00204"></a>00204 <span class="stringliteral">'The connection has been closed'</span>
- <a name="l00205"></a>00205 );
- <a name="l00206"></a>00206 }
- <a name="l00207"></a>00207
- <a name="l00208"></a>00208 <span class="keywordflow">return</span> $this->client;
- <a name="l00209"></a>00209 }
- <a name="l00210"></a>00210
- <a name="l00216"></a><a class="code" href="classCassandraConnection.html#a7f12a9a108ea4d89083a48bbebdb8a60">00216</a> <span class="keyword">public</span> function <a class="code" href="classCassandraConnection.html#a7f12a9a108ea4d89083a48bbebdb8a60">getTransport</a>() {
- <a name="l00217"></a>00217 <span class="keywordflow">return</span> $this->transport;
- <a name="l00218"></a>00218 }
- <a name="l00219"></a>00219
- <a name="l00225"></a><a class="code" href="classCassandraConnection.html#adb1d52d166f36506ab94605b260e821f">00225</a> <span class="keyword">public</span> function <a class="code" href="classCassandraConnection.html#adb1d52d166f36506ab94605b260e821f">getProtocol</a>() {
- <a name="l00226"></a>00226 <span class="keywordflow">return</span> $this->transport;
- <a name="l00227"></a>00227 }
- <a name="l00228"></a>00228
- <a name="l00238"></a><a class="code" href="classCassandraConnection.html#a9bb32ec133d74c18a5ab142a33b96539">00238</a> <span class="keyword">public</span> function <a class="code" href="classCassandraConnection.html#a9bb32ec133d74c18a5ab142a33b96539">useKeyspace</a>(
- <a name="l00239"></a>00239 $keyspace,
- <a name="l00240"></a>00240 $username = null,
- <a name="l00241"></a>00241 $password = null
- <a name="l00242"></a>00242 ) {
- <a name="l00243"></a>00243 $attempts = 3;
- <a name="l00244"></a>00244 $success = <span class="keyword">false</span>;
- <a name="l00245"></a>00245
- <a name="l00246"></a>00246 <span class="keywordflow">while</span>($attempts-- > 0 && !$success) {
- <a name="l00247"></a>00247 <span class="keywordflow">try</span> {
- <a name="l00248"></a>00248 $this->client->set_keyspace($keyspace);
- <a name="l00249"></a>00249 $success = <span class="keyword">true</span>;
- <a name="l00250"></a>00250 } <span class="keywordflow">catch</span> (cassandra_InvalidRequestException $e) {
- <a name="l00251"></a>00251 <span class="keywordflow">continue</span>;
- <a name="l00252"></a>00252 }
- <a name="l00253"></a>00253 }
- <a name="l00254"></a>00254
- <a name="l00255"></a>00255 <span class="keywordflow">if</span> (!$success) {
- <a name="l00256"></a>00256 <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code" href="classCassandraSettingKeyspaceFailedException.html">CassandraSettingKeyspaceFailedException</a>(
- <a name="l00257"></a>00257 <span class="stringliteral">'Using keyspace "'</span>.$keyspace.<span class="stringliteral">'" failed after several attempts'</span>
- <a name="l00258"></a>00258 );
- <a name="l00259"></a>00259 }
- <a name="l00260"></a>00260
- <a name="l00261"></a>00261 <span class="keywordflow">if</span> ($username !== null) {
- <a name="l00262"></a>00262 $request = <span class="keyword">new</span> cassandra_AuthenticationRequest(
- <a name="l00263"></a>00263 array(<span class="stringliteral">'credentials'</span> => array($username, $password))
- <a name="l00264"></a>00264 );
- <a name="l00265"></a>00265
- <a name="l00266"></a>00266 $this->client->login($request);
- <a name="l00267"></a>00267 }
- <a name="l00268"></a>00268 }
- <a name="l00269"></a>00269
- <a name="l00279"></a><a class="code" href="classCassandraConnection.html#a6886c992c6b7cbc24deb801fb8ee52db">00279</a> <span class="keyword">protected</span> function <a class="code" href="classCassandraConnection.html#a6886c992c6b7cbc24deb801fb8ee52db">createSocket</a>(
- <a name="l00280"></a>00280 $host,
- <a name="l00281"></a>00281 $port,
- <a name="l00282"></a>00282 $sendTimeoutMs,
- <a name="l00283"></a>00283 $receiveTimeoutMs
- <a name="l00284"></a>00284 ) {
- <a name="l00285"></a>00285 $socket = <span class="keyword">new</span> TSocket($host, $port);
- <a name="l00286"></a>00286
- <a name="l00287"></a>00287 <span class="keywordflow">if</span> ($sendTimeoutMs !== null) {
- <a name="l00288"></a>00288 $socket->setSendTimeout($sendTimeoutMs);
- <a name="l00289"></a>00289 }
- <a name="l00290"></a>00290
- <a name="l00291"></a>00291 <span class="keywordflow">if</span> ($receiveTimeoutMs !== null) {
- <a name="l00292"></a>00292 $socket->setRecvTimeout($receiveTimeoutMs);
- <a name="l00293"></a>00293 }
- <a name="l00294"></a>00294
- <a name="l00295"></a>00295 <span class="keywordflow">return</span> $socket;
- <a name="l00296"></a>00296 }
- <a name="l00297"></a>00297
- <a name="l00304"></a><a class="code" href="classCassandraConnection.html#a00c2d10e54028d15cfb5ef8bde3468d3">00304</a> <span class="keyword">protected</span> function <a class="code" href="classCassandraConnection.html#a00c2d10e54028d15cfb5ef8bde3468d3">createFramedTransport</a>(TSocket $socket) {
- <a name="l00305"></a>00305 require_once THRIFT_PATH.<span class="stringliteral">'/transport/TFramedTransport.php'</span>;
- <a name="l00306"></a>00306
- <a name="l00307"></a>00307 <span class="keywordflow">return</span> <span class="keyword">new</span> TFramedTransport($socket, <span class="keyword">true</span>, <span class="keyword">true</span>);
- <a name="l00308"></a>00308 }
- <a name="l00309"></a>00309
- <a name="l00316"></a><a class="code" href="classCassandraConnection.html#a3e3b2e2318ff07ee56bcae235634c2e4">00316</a> <span class="keyword">protected</span> function <a class="code" href="classCassandraConnection.html#a3e3b2e2318ff07ee56bcae235634c2e4">createBufferedTransport</a>(TSocket $socket) {
- <a name="l00317"></a>00317 require_once THRIFT_PATH.<span class="stringliteral">'/transport/TBufferedTransport.php'</span>;
- <a name="l00318"></a>00318
- <a name="l00319"></a>00319 <span class="keywordflow">return</span> <span class="keyword">new</span> TBufferedTransport($socket, 512, 512);
- <a name="l00320"></a>00320 }
- <a name="l00321"></a>00321 }
- <a name="l00322"></a>00322
- <a name="l00328"></a><a class="code" href="classCassandraCluster.html">00328</a> <span class="keyword">class </span><a class="code" href="classCassandraCluster.html">CassandraCluster</a> {
- <a name="l00329"></a>00329
- <a name="l00335"></a>00335 <span class="keyword">protected</span> $keyspace;
- <a name="l00336"></a>00336
- <a name="l00342"></a>00342 <span class="keyword">protected</span> $username;
- <a name="l00343"></a>00343
- <a name="l00349"></a>00349 <span class="keyword">protected</span> $password;
- <a name="l00350"></a>00350
- <a name="l00356"></a>00356 <span class="keyword">protected</span> $servers = array();
- <a name="l00357"></a>00357
- <a name="l00365"></a>00365 <span class="keyword">protected</span> $connections = array();
- <a name="l00366"></a>00366
- <a name="l00375"></a><a class="code" href="classCassandraCluster.html#a6ca88a787d742b39e43b6a5fefabc633">00375</a> <span class="keyword">public</span> function <a class="code" href="classCassandraCluster.html#a6ca88a787d742b39e43b6a5fefabc633">__construct</a>(array $servers = array()) {
- <a name="l00376"></a>00376 <span class="keywordflow">foreach</span> ($servers as $server) {
- <a name="l00377"></a>00377 $this-><a class="code" href="classCassandraCluster.html#a49baa9fac921644a5ba10f98c4a7412d">registerServer</a>(
- <a name="l00378"></a>00378 isset($server[<span class="stringliteral">'host'</span>]) ? $server[<span class="stringliteral">'host'</span>] : <span class="stringliteral">'127.0.0.1'</span>,
- <a name="l00379"></a>00379 isset($server[<span class="stringliteral">'port'</span>]) ? $server[<span class="stringliteral">'port'</span>] : 9160,
- <a name="l00380"></a>00380 isset($server[<span class="stringliteral">'use-framed-transport'</span>]) ? $server[<span class="stringliteral">'use-framed-transport'</span>] : <span class="keyword">true</span>,
- <a name="l00381"></a>00381 isset($server[<span class="stringliteral">'send-timeout-ms'</span>]) ? $server[<span class="stringliteral">'send-timeout-ms'</span>] : null,
- <a name="l00382"></a>00382 isset($server[<span class="stringliteral">'receive-timeout-ms'</span>]) ? $server[<span class="stringliteral">'receive-timeout-ms'</span>] : null
- <a name="l00383"></a>00383 );
- <a name="l00384"></a>00384 }
- <a name="l00385"></a>00385 }
- <a name="l00386"></a>00386
- <a name="l00390"></a><a class="code" href="classCassandraCluster.html#a4ce9e28f647bbbbb253273c3e0fa377a">00390</a> <span class="keyword">public</span> function <a class="code" href="classCassandraCluster.html#a4ce9e28f647bbbbb253273c3e0fa377a">__destruct</a>() {
- <a name="l00391"></a>00391 $this-><a class="code" href="classCassandraCluster.html#afbff3180c5d4bb74c8b230436349d460">closeConnections</a>();
- <a name="l00392"></a>00392 }
- <a name="l00393"></a>00393
- <a name="l00407"></a><a class="code" href="classCassandraCluster.html#a49baa9fac921644a5ba10f98c4a7412d">00407</a> <span class="keyword">public</span> function <a class="code" href="classCassandraCluster.html#a49baa9fac921644a5ba10f98c4a7412d">registerServer</a>(
- <a name="l00408"></a>00408 $host = <span class="stringliteral">'127.0.0.1'</span>,
- <a name="l00409"></a>00409 $port = 9160,
- <a name="l00410"></a>00410 $useFramedTransport = <span class="keyword">true</span>,
- <a name="l00411"></a>00411 $sendTimeoutMs = null,
- <a name="l00412"></a>00412 $receiveTimeoutMs = null
- <a name="l00413"></a>00413 ) {
- <a name="l00414"></a>00414 $this->servers[] = array(
- <a name="l00415"></a>00415 <span class="stringliteral">'host'</span> => $host,
- <a name="l00416"></a>00416 <span class="stringliteral">'port'</span> => $port,
- <a name="l00417"></a>00417 <span class="stringliteral">'use-framed-transport'</span> => $useFramedTransport,
- <a name="l00418"></a>00418 <span class="stringliteral">'send-timeout-ms'</span> => $sendTimeoutMs,
- <a name="l00419"></a>00419 <span class="stringliteral">'receive-timeout-ms'</span> => $receiveTimeoutMs
- <a name="l00420"></a>00420 );
- <a name="l00421"></a>00421
- <a name="l00422"></a>00422 <span class="keywordflow">return</span> $this;
- <a name="l00423"></a>00423 }
- <a name="l00424"></a>00424
- <a name="l00433"></a><a class="code" href="classCassandraCluster.html#a1044f6f79a82fbb33aa6dd0374cac07a">00433</a> <span class="keyword">public</span> function <a class="code" href="classCassandraCluster.html#a1044f6f79a82fbb33aa6dd0374cac07a">useKeyspace</a>($keyspace, $username = null, $password = null) {
- <a name="l00434"></a>00434 $this->keyspace = $keyspace;
- <a name="l00435"></a>00435 $this->username = $username;
- <a name="l00436"></a>00436 $this->password = $password;
- <a name="l00437"></a>00437
- <a name="l00438"></a>00438 $this-><a class="code" href="classCassandraCluster.html#a27ec1b4718ca21a87a791035130d0746">getConnection</a>();
- <a name="l00439"></a>00439
- <a name="l00440"></a>00440 <span class="keywordflow">foreach</span> ($this->connections as $connection) {
- <a name="l00441"></a>00441 $connection->useKeyspace(
- <a name="l00442"></a>00442 $keyspace,
- <a name="l00443"></a>00443 $username,
- <a name="l00444"></a>00444 $password
- <a name="l00445"></a>00445 );
- <a name="l00446"></a>00446 }
- <a name="l00447"></a>00447
- <a name="l00448"></a>00448 <span class="keywordflow">return</span> $this;
- <a name="l00449"></a>00449 }
- <a name="l00450"></a>00450
- <a name="l00456"></a><a class="code" href="classCassandraCluster.html#a0cc3add750920cad51b03676b549e256">00456</a> <span class="keyword">public</span> function <a class="code" href="classCassandraCluster.html#a0cc3add750920cad51b03676b549e256">getCurrentKeyspace</a>() {
- <a name="l00457"></a>00457 <span class="keywordflow">return</span> $this->keyspace;
- <a name="l00458"></a>00458 }
- <a name="l00459"></a>00459
- <a name="l00465"></a><a class="code" href="classCassandraCluster.html#af213845fa6bfb0e6a986fb671be28552">00465</a> <span class="keyword">public</span> function <a class="code" href="classCassandraCluster.html#af213845fa6bfb0e6a986fb671be28552">getServers</a>() {
- <a name="l00466"></a>00466 <span class="keywordflow">return</span> $this->servers;
- <a name="l00467"></a>00467 }
- <a name="l00468"></a>00468
- <a name="l00484"></a><a class="code" href="classCassandraCluster.html#a27ec1b4718ca21a87a791035130d0746">00484</a> <span class="keyword">public</span> function <a class="code" href="classCassandraCluster.html#a27ec1b4718ca21a87a791035130d0746">getConnection</a>() {
- <a name="l00485"></a>00485 <span class="keywordflow">if</span> (empty($this->servers)) {
- <a name="l00486"></a>00486 <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code" href="classCassandraConnectionFailedException.html">CassandraConnectionFailedException</a>(
- <a name="l00487"></a>00487 <span class="stringliteral">'Unable to create connection, the cluster server pool is empty'</span>
- <a name="l00488"></a>00488 );
- <a name="l00489"></a>00489 }
- <a name="l00490"></a>00490
- <a name="l00491"></a>00491 $serverCount = count($this->servers);
- <a name="l00492"></a>00492 $attemptsLeft = $serverCount * 2;
- <a name="l00493"></a>00493
- <a name="l00494"></a>00494 <span class="keywordflow">while</span> ($attemptsLeft-- > 0) {
- <a name="l00495"></a>00495 $randomServerIndex = mt_rand(0, $serverCount - 1);
- <a name="l00496"></a>00496
- <a name="l00497"></a>00497 <span class="keywordflow">if</span> (isset($this->connections[$randomServerIndex])) {
- <a name="l00498"></a>00498 <span class="keywordflow">if</span> (!$this->connections[$randomServerIndex]->isOpen()) {
- <a name="l00499"></a>00499 unset($this->connections[$randomServerIndex]);
- <a name="l00500"></a>00500
- <a name="l00501"></a>00501 <span class="keywordflow">continue</span>;
- <a name="l00502"></a>00502 }
- <a name="l00503"></a>00503
- <a name="l00504"></a>00504 <span class="keywordflow">return</span> $this->connections[$randomServerIndex];
- <a name="l00505"></a>00505 } <span class="keywordflow">else</span> {
- <a name="l00506"></a>00506 $server = $this->servers[$randomServerIndex];
- <a name="l00507"></a>00507
- <a name="l00508"></a>00508 <span class="keywordflow">try</span> {
- <a name="l00509"></a>00509 $this->connections[$randomServerIndex] = <span class="keyword">new</span> <a class="code" href="classCassandraConnection.html">CassandraConnection</a>(
- <a name="l00510"></a>00510 $server[<span class="stringliteral">'host'</span>],
- <a name="l00511"></a>00511 $server[<span class="stringliteral">'port'</span>],
- <a name="l00512"></a>00512 $server[<span class="stringliteral">'use-framed-transport'</span>],
- <a name="l00513"></a>00513 $server[<span class="stringliteral">'send-timeout-ms'</span>],
- <a name="l00514"></a>00514 $server[<span class="stringliteral">'receive-timeout-ms'</span>]
- <a name="l00515"></a>00515 );
- <a name="l00516"></a>00516
- <a name="l00517"></a>00517 $this->connections[$randomServerIndex]->useKeyspace(
- <a name="l00518"></a>00518 $this->keyspace,
- <a name="l00519"></a>00519 $this->username,
- <a name="l00520"></a>00520 $this->password
- <a name="l00521"></a>00521 );
- <a name="l00522"></a>00522
- <a name="l00523"></a>00523 <span class="keywordflow">return</span> $this->connections[$randomServerIndex];
- <a name="l00524"></a>00524 } <span class="keywordflow">catch</span> (TException $e) {
- <a name="l00525"></a>00525 <span class="keywordflow">continue</span>;
- <a name="l00526"></a>00526 }
- <a name="l00527"></a>00527 }
- <a name="l00528"></a>00528 }
- <a name="l00529"></a>00529
- <a name="l00530"></a>00530 <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code" href="classCassandraConnectionFailedException.html">CassandraConnectionFailedException</a>(
- <a name="l00531"></a>00531 <span class="stringliteral">'Connecting to any of the '</span>.$serverCount.<span class="stringliteral">' nodes failed'</span>
- <a name="l00532"></a>00532 );
- <a name="l00533"></a>00533 }
- <a name="l00534"></a>00534
- <a name="l00540"></a><a class="code" href="classCassandraCluster.html#afbff3180c5d4bb74c8b230436349d460">00540</a> <span class="keyword">public</span> function <a class="code" href="classCassandraCluster.html#afbff3180c5d4bb74c8b230436349d460">closeConnections</a>() {
- <a name="l00541"></a>00541 <span class="keywordflow">foreach</span> ($this->connections as $connection) {
- <a name="l00542"></a>00542 $connection->close();
- <a name="l00543"></a>00543 }
- <a name="l00544"></a>00544
- <a name="l00545"></a>00545 $this->connections = array();
- <a name="l00546"></a>00546
- <a name="l00547"></a>00547 <span class="keywordflow">return</span> $this;
- <a name="l00548"></a>00548 }
- <a name="l00549"></a>00549 }
- <a name="l00550"></a>00550
- <a name="l00555"></a><a class="code" href="classCassandra.html">00555</a> <span class="keyword">class </span><a class="code" href="classCassandra.html">Cassandra</a> {
- <a name="l00556"></a>00556
- <a name="l00562"></a>00562 <span class="keyword">protected</span> <span class="keyword">static</span> $instances = array();
- <a name="l00563"></a>00563
- <a name="l00570"></a>00570 <span class="keyword">protected</span> <span class="keyword">static</span> $keyspaceRequiredMethods;
- <a name="l00571"></a>00571
- <a name="l00577"></a>00577 <span class="keyword">protected</span> <span class="keyword">static</span> $requestKeyTokens = array(<span class="charliteral">'.'</span>, <span class="charliteral">':'</span>, <span class="charliteral">','</span>, <span class="charliteral">'-'</span>, <span class="charliteral">'|'</span>);
- <a name="l00578"></a>00578
- <a name="l00584"></a>00584 <span class="keyword">protected</span> $cluster;
- <a name="l00585"></a>00585
- <a name="l00593"></a>00593 <span class="keyword">protected</span> $maxCallRetries = 5;
- <a name="l00594"></a>00594
- <a name="l00600"></a>00600 <span class="keyword">protected</span> $defaultColumnCount = 100;
- <a name="l00601"></a>00601
- <a name="l00610"></a>00610 <span class="keyword">protected</span> $columnFamilies = array();
- <a name="l00611"></a>00611
- <a name="l00617"></a>00617 <span class="keyword">protected</span> $keyspaceAuthentication = array();
- <a name="l00618"></a>00618
- <a name="l00625"></a>00625 <span class="keyword">protected</span> $autopack = <span class="keyword">true</span>;
- <a name="l00626"></a>00626
- <a name="l00634"></a><a class="code" href="classCassandra.html#afd35e5b7419ce2915891c349a44b6f22">00634</a> <span class="keyword">const</span> <a class="code" href="classCassandra.html#afd35e5b7419ce2915891c349a44b6f22">CONSISTENCY_ONE</a> = cassandra_ConsistencyLevel::ONE;
- <a name="l00635"></a>00635
- <a name="l00644"></a><a class="code" href="classCassandra.html#a58c08b49c2434526a62f74248c8b959d">00644</a> <span class="keyword">const</span> <a class="code" href="classCassandra.html#a58c08b49c2434526a62f74248c8b959d">CONSISTENCY_QUORUM</a> = cassandra_ConsistencyLevel::QUORUM;
- <a name="l00645"></a>00645
- <a name="l00657"></a><a class="code" href="classCassandra.html#a94fdd09de0798393d86a9965482cefa7">00657</a> <span class="keyword">const</span> <a class="code" href="classCassandra.html#a94fdd09de0798393d86a9965482cefa7">CONSISTENCY_ANY</a> = cassandra_ConsistencyLevel::ANY;
- <a name="l00658"></a>00658
- <a name="l00667"></a><a class="code" href="classCassandra.html#ac7e4763d615ce200970153894d53219a">00667</a> <span class="keyword">const</span> <a class="code" href="classCassandra.html#ac7e4763d615ce200970153894d53219a">CONSISTENCY_ALL</a> = cassandra_ConsistencyLevel::ALL;
- <a name="l00668"></a>00668
- <a name="l00672"></a><a class="code" href="classCassandra.html#a5b7fd78b8f044623445d9e9a8f175790">00672</a> <span class="keyword">const</span> <a class="code" href="classCassandra.html#a5b7fd78b8f044623445d9e9a8f175790">COLUMN_STANDARD</a> = <span class="stringliteral">'Standard'</span>;
- <a name="l00673"></a>00673
- <a name="l00677"></a><a class="code" href="classCassandra.html#abf8e49b590d1e1b83d3e13cc133cd672">00677</a> <span class="keyword">const</span> <a class="code" href="classCassandra.html#abf8e49b590d1e1b83d3e13cc133cd672">COLUMN_SUPER</a> = <span class="stringliteral">'Super'</span>;
- <a name="l00678"></a>00678
- <a name="l00682"></a><a class="code" href="classCassandra.html#acc917786b5bbbdd6eb4783856bd5580c">00682</a> <span class="keyword">const</span> <a class="code" href="classCassandra.html#acc917786b5bbbdd6eb4783856bd5580c">TYPE_ASCII</a> = <span class="stringliteral">'AsciiType'</span>;
- <a name="l00683"></a>00683
- <a name="l00687"></a><a class="code" href="classCassandra.html#ab75de9aa0588c7665f1c9d8cf8d4e8ff">00687</a> <span class="keyword">const</span> <a class="code" href="classCassandra.html#ab75de9aa0588c7665f1c9d8cf8d4e8ff">TYPE_BYTES</a> = <span class="stringliteral">'BytesType'</span>;
- <a name="l00688"></a>00688
- <a name="l00697"></a><a class="code" href="classCassandra.html#a2af16bdea44f4e16ba5c5baa5380b9f0">00697</a> <span class="keyword">const</span> <a class="code" href="classCassandra.html#a2af16bdea44f4e16ba5c5baa5380b9f0">TYPE_LEXICAL_UUID</a> = <span class="stringliteral">'LexicalUUIDType'</span>;
- <a name="l00698"></a>00698
- <a name="l00706"></a><a class="code" href="classCassandra.html#a42861ad94788ba940228767a79f1c4c7">00706</a> <span class="keyword">const</span> <a class="code" href="classCassandra.html#a42861ad94788ba940228767a79f1c4c7">TYPE_TIME_UUID</a> = <span class="stringliteral">'TimeUUIDType'</span>;
- <a name="l00707"></a>00707
- <a name="l00711"></a><a class="code" href="classCassandra.html#acf64f8105c4bfe0c95f868437299442f">00711</a> <span class="keyword">const</span> <a class="code" href="classCassandra.html#acf64f8105c4bfe0c95f868437299442f">TYPE_LONG</a> = <span class="stringliteral">'LongType'</span>;
- <a name="l00712"></a>00712
- <a name="l00716"></a><a class="code" href="classCassandra.html#a4160c654a18aead3a642fd1f3f2415e9">00716</a> <span class="keyword">const</span> <a class="code" href="classCassandra.html#a4160c654a18aead3a642fd1f3f2415e9">TYPE_INTEGER</a> = <span class="stringliteral">'IntegerType'</span>;
- <a name="l00717"></a>00717
- <a name="l00721"></a><a class="code" href="classCassandra.html#ac03a89bd430178d9bce987eba8001b82">00721</a> <span class="keyword">const</span> <a class="code" href="classCassandra.html#ac03a89bd430178d9bce987eba8001b82">TYPE_UTF8</a> = <span class="stringliteral">'UTF8Type'</span>;
- <a name="l00722"></a>00722
- <a name="l00726"></a><a class="code" href="classCassandra.html#a33b81650dd46405f23e6d469eeb1bd5b">00726</a> <span class="keyword">const</span> <a class="code" href="classCassandra.html#a33b81650dd46405f23e6d469eeb1bd5b">OP_EQ</a> = cassandra_IndexOperator::EQ;
- <a name="l00727"></a>00727
- <a name="l00731"></a><a class="code" href="classCassandra.html#acf59b31536a8a886422ef7335020f99d">00731</a> <span class="keyword">const</span> <a class="code" href="classCassandra.html#acf59b31536a8a886422ef7335020f99d">OP_LT</a> = cassandra_IndexOperator::LT;
- <a name="l00732"></a>00732
- <a name="l00736"></a><a class="code" href="classCassandra.html#a660ca00d7f33558017e15ccc1f8f5d29">00736</a> <span class="keyword">const</span> <a class="code" href="classCassandra.html#a660ca00d7f33558017e15ccc1f8f5d29">OP_GT</a> = cassandra_IndexOperator::GT;
- <a name="l00737"></a>00737
- <a name="l00741"></a><a class="code" href="classCassandra.html#ab633158313b4f7f785910884d950f945">00741</a> <span class="keyword">const</span> <a class="code" href="classCassandra.html#ab633158313b4f7f785910884d950f945">OP_LTE</a> = cassandra_IndexOperator::LTE;
- <a name="l00742"></a>00742
- <a name="l00746"></a><a class="code" href="classCassandra.html#a60a245248555c96cadec6977014c27df">00746</a> <span class="keyword">const</span> <a class="code" href="classCassandra.html#a60a245248555c96cadec6977014c27df">OP_GTE</a> = cassandra_IndexOperator::GTE;
- <a name="l00747"></a>00747
- <a name="l00752"></a><a class="code" href="classCassandra.html#acae99f4717a1b6a2fb14343b9ca02806">00752</a> <span class="keyword">const</span> <a class="code" href="classCassandra.html#acae99f4717a1b6a2fb14343b9ca02806">PLACEMENT_SIMPLE</a> = <span class="stringliteral">'org.apache.cassandra.locator.SimpleStrategy'</span>;
- <a name="l00753"></a>00753
- <a name="l00757"></a>00757 <span class="keyword">const</span> <a class="code" href="classCassandra.html#a82e1fae7c469b0983ad1d38b309273fd">PLACEMENT_NETWORK</a>
- <a name="l00758"></a><a class="code" href="classCassandra.html#a82e1fae7c469b0983ad1d38b309273fd">00758</a> = <span class="stringliteral">'org.apache.cassandra.locator.NetworkTopologyStrategy'</span>;
- <a name="l00759"></a>00759
- <a name="l00763"></a>00763 <span class="keyword">const</span> <a class="code" href="classCassandra.html#a3ea159c9a7ead7fa56cac7f8ebe9bc74">PLACEMENT_OLD_NETWORK</a>
- <a name="l00764"></a><a class="code" href="classCassandra.html#a3ea159c9a7ead7fa56cac7f8ebe9bc74">00764</a> = <span class="stringliteral">'org.apache.cassandra.locator.OldNetworkTopologyStrategy'</span>;
- <a name="l00765"></a>00765
- <a name="l00769"></a><a class="code" href="classCassandra.html#aa3d7e3c4c9454133e7b21165bb7c3953">00769</a> <span class="keyword">const</span> <a class="code" href="classCassandra.html#aa3d7e3c4c9454133e7b21165bb7c3953">INDEX_KEYS</a> = 0;
- <a name="l00770"></a>00770
- <a name="l00779"></a><a class="code" href="classCassandra.html#a92574efcf6569a6e2e6f82b6101e83d2">00779</a> <span class="keyword">private</span> function <a class="code" href="classCassandra.html#a92574efcf6569a6e2e6f82b6101e83d2">__construct</a>(array $servers = array(), $autopack = <span class="keyword">true</span>) {
- <a name="l00780"></a>00780 $this->cluster = <span class="keyword">new</span> <a class="code" href="classCassandraCluster.html">CassandraCluster</a>($servers);
- <a name="l00781"></a>00781 $this->autopack = $autopack;
- <a name="l00782"></a>00782 }
- <a name="l00783"></a>00783
- <a name="l00787"></a><a class="code" href="classCassandra.html#abb13b5073e065e8f2a60b1c6f18c573e">00787</a> <span class="keyword">public</span> function <a class="code" href="classCassandra.html#abb13b5073e065e8f2a60b1c6f18c573e">__clone</a>() {
- <a name="l00788"></a>00788 trigger_error(<span class="stringliteral">'Clone is not allowed.'</span>, E_USER_ERROR);
- <a name="l00789"></a>00789 }
- <a name="l00790"></a>00790
- <a name="l00801"></a><a class="code" href="classCassandra.html#a0eb2d8394ec9b98363eb2ea13c3390a6">00801</a> <span class="keyword">public</span> <span class="keyword">static</span> function <a class="code" href="classCassandra.html#a0eb2d8394ec9b98363eb2ea13c3390a6">createInstance</a>(array $servers, $name = <span class="stringliteral">'main'</span>) {
- <a name="l00802"></a>00802 self::$instances[$name] = <span class="keyword">new</span> <span class="keyword">self</span>($servers);
- <a name="l00803"></a>00803
- <a name="l00804"></a>00804 <span class="keywordflow">return</span> self::$instances[$name];
- <a name="l00805"></a>00805 }
- <a name="l00806"></a>00806
- <a name="l00817"></a><a class="code" href="classCassandra.html#accae5522cc54a2f679f7925752d14c01">00817</a> <span class="keyword">public</span> <span class="keyword">static</span> function <a class="code" href="classCassandra.html#accae5522cc54a2f679f7925752d14c01">getInstance</a>($name = <span class="stringliteral">'main'</span>) {
- <a name="l00818"></a>00818 <span class="keywordflow">if</span> (!isset(self::$instances[$name])) {
- <a name="l00819"></a>00819 <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code" href="classCassandraInvalidRequestException.html">CassandraInvalidRequestException</a>(
- <a name="l00820"></a>00820 <span class="stringliteral">'Instance called "'</span>.$name.<span class="stringliteral">'" does not exist'</span>
- <a name="l00821"></a>00821 );
- <a name="l00822"></a>00822 }
- <a name="l00823"></a>00823
- <a name="l00824"></a>00824 <span class="keywordflow">return</span> self::$instances[$name];
- <a name="l00825"></a>00825 }
- <a name="l00826"></a>00826
- <a name="l00834"></a><a class="code" href="classCassandra.html#a22c9c1782896b9ee47117643c89f0052">00834</a> <span class="keyword">protected</span> function <a class="code" href="classCassandra.html#a22c9c1782896b9ee47117643c89f0052">registerKeyspace</a>(
- <a name="l00835"></a>00835 $keyspace,
- <a name="l00836"></a>00836 $username = null,
- <a name="l00837"></a>00837 $password = null
- <a name="l00838"></a>00838 ) {
- <a name="l00839"></a>00839 $this->keyspaceAuthentication[$keyspace] = array(
- <a name="l00840"></a>00840 <span class="stringliteral">'username'</span> => $username,
- <a name="l00841"></a>00841 <span class="stringliteral">'password'</span> => $password
- <a name="l00842"></a>00842 );
- <a name="l00843"></a>00843 }
- <a name="l00844"></a>00844
- <a name="l00858"></a><a class="code" href="classCassandra.html#a4502befdb4278113462bc7fcfbafa09f">00858</a> <span class="keyword">public</span> function <a class="code" href="classCassandra.html#a4502befdb4278113462bc7fcfbafa09f">useKeyspace</a>($keyspace, $username = null, $password = null) {
- <a name="l00859"></a>00859 <span class="keywordflow">if</span> (!empty($username)) {
- <a name="l00860"></a>00860 $this-><a class="code" href="classCassandra.html#a22c9c1782896b9ee47117643c89f0052">registerKeyspace</a>($keyspace, $username, $password);
- <a name="l00861"></a>00861 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isset($this->keyspaceAuthentication[$keyspace])) {
- <a name="l00862"></a>00862 $username = $this->keyspaceAuthentication[$keyspace][<span class="stringliteral">'username'</span>];
- <a name="l00863"></a>00863 $password = $this->keyspaceAuthentication[$keyspace][<span class="stringliteral">'password'</span>];
- <a name="l00864"></a>00864 }
- <a name="l00865"></a>00865
- <a name="l00866"></a>00866 $this->cluster->useKeyspace($keyspace, $username, $password);
- <a name="l00867"></a>00867
- <a name="l00868"></a>00868 <span class="keywordflow">return</span> $this;
- <a name="l00869"></a>00869 }
- <a name="l00870"></a>00870
- <a name="l00876"></a><a class="code" href="classCassandra.html#ad8fe43e1ceb9841cca92cf981fb566b3">00876</a> <span class="keyword">public</span> function <a class="code" href="classCassandra.html#ad8fe43e1ceb9841cca92cf981fb566b3">getCluster</a>() {
- <a name="l00877"></a>00877 <span class="keywordflow">return</span> $this->cluster;
- <a name="l00878"></a>00878 }
- <a name="l00879"></a>00879
- <a name="l00885"></a><a class="code" href="classCassandra.html#ac300f4b8ed3a2d80388225e0ec990883">00885</a> <span class="keyword">public</span> function <a class="code" href="classCassandra.html#ac300f4b8ed3a2d80388225e0ec990883">getConnection</a>() {
- <a name="l00886"></a>00886 <span class="keywordflow">return</span> $this->cluster->getConnection();
- <a name="l00887"></a>00887 }
- <a name="l00888"></a>00888
- <a name="l00894"></a><a class="code" href="classCassandra.html#a382ebe135b67bddef1e0a9fa21448cde">00894</a> <span class="keyword">public</span> function <a class="code" href="classCassandra.html#a382ebe135b67bddef1e0a9fa21448cde">closeConnections</a>() {
- <a name="l00895"></a>00895 $this->cluster->closeConnections();
- <a name="l00896"></a>00896 }
- <a name="l00897"></a>00897
- <a name="l00903"></a><a class="code" href="classCassandra.html#a4eaaed3e996a26cc145057487036584b">00903</a> <span class="keyword">public</span> function <a class="code" href="classCassandra.html#a4eaaed3e996a26cc145057487036584b">getClient</a>() {
- <a name="l00904"></a>00904 <span class="keywordflow">return</span> $this->cluster->getConnection()->getClient();
- <a name="l00905"></a>00905 }
- <a name="l00906"></a>00906
- <a name="l00914"></a><a class="code" href="classCassandra.html#aea614dd2c8170609c0ec9e81607983a0">00914</a> <span class="keyword">public</span> function <a class="code" href="classCassandra.html#aea614dd2c8170609c0ec9e81607983a0">setMaxCallRetries</a>($retryCount) {
- <a name="l00915"></a>00915 $this->maxCallRetries = $retryCount;
- <a name="l00916"></a>00916
- <a name="l00917"></a>00917 <span class="keywordflow">return</span> $this;
- <a name="l00918"></a>00918 }
- <a name="l00919"></a>00919
- <a name="l00925"></a><a class="code" href="classCassandra.html#af62c6e8771c55cfe9a94e8a6551a5e1b">00925</a> <span class="keyword">public</span> function <a class="code" href="classCassandra.html#af62c6e8771c55cfe9a94e8a6551a5e1b">setDefaultColumnCount</a>($columnCountLimit) {
- <a name="l00926"></a>00926 $this->defaultColumnCount = $columnCountLimit;
- <a name="l00927"></a>00927 }
- <a name="l00928"></a>00928
- <a name="l00943"></a><a class="code" href="classCassandra.html#a5a83ae74dca462d6d7527c2a682ae550">00943</a> <span class="keyword">public</span> function <a class="code" href="classCassandra.html#a5a83ae74dca462d6d7527c2a682ae550">call</a>(<span class="comment">/*$methodName, $arg1, $arg2 */</span>) {
- <a name="l00944"></a>00944 $args = func_get_args();
- <a name="l00945"></a>00945 $methodName = array_shift($args);
- <a name="l00946"></a>00946
- <a name="l00947"></a>00947 $tries = $this->maxCallRetries;
- <a name="l00948"></a>00948 $lastException = null;
- <a name="l00949"></a>00949
- <a name="l00950"></a>00950 $keyspaceRequiredMethods = <a class="code" href="classCassandra.html#ad051f9ef0cdc597c5838124c58e9f962">self::getKeyspaceRequiredMethods</a>();
- <a name="l00951"></a>00951
- <a name="l00952"></a>00952 <span class="keywordflow">if</span> (
- <a name="l00953"></a>00953 in_array($methodName, $keyspaceRequiredMethods)
- <a name="l00954"></a>00954 && $this->cluster->getCurrentKeyspace() === null
- <a name="l00955"></a>00955 ) {
- <a name="l00956"></a>00956 <span class="keywordflow">throw</span> <span class="keyword">new</span> <a class="code" href="classCassandraInvalidRequestException.html">CassandraInvalidRequestException</a>(
- <a name="l00957"></a>00957 <span class="stringliteral">'Unable to call "'</span>.$methodName.<span class="stringliteral">'", no keyspace has been set'</span>
- <a name="l00958"></a>00958 );
- <a name="l00959"></a>00959 }
- <a name="l00960"></a>00960
- <a name="l00961"></a>00961 $try = 0;
- <a name="l00962"></a>00962
- <a name="l00963"></a>00963 <span class="keywordflow">while</span>($tries-- > 0) {
- <a name="l00964"></a>00964 $client = $this-><a class="code" href="classCassandra.html#a4eaaed3e996a26cc145057487036584b">getClient</a>();
- <a name="l00965"></a>00965 $try++;
- <a name="l00966"></a>00966
- <a name="l00967"></a>00967 <span class="keywordflow">try</span> {
- <a name="l00968"></a>00968 <span class="keywordflow">return</span> call_user_func_array(array($client, $methodName), $args);
- <a name="l00969"></a>00969 } <span class="keywordflow">catch</span> (Exception $e) {
- <a name="l00970"></a>00970 $lastException = $e;
- <a name="l00971"></a>00971
- <a name="l00972"></a>00972 usleep(0.1 * pow(2, $try) * 1000000);
- <a name="l00973"></a>00973 }
- <a name="l00974"></a>00974 }
- <a name="l00975"></a>00975
- <a name="l00976"></a>00976 <span class="keywordflow">throw</span> <sp…
Large files files are truncated, but you can click here to view the full file