XSServer.html 46 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=gbk" />
  5. <meta name="language" content="zh-cn" />
  6. <link rel="stylesheet" type="text/css" href="css/style.css" />
  7. <link rel="stylesheet" type="text/css" href="css/api.css" />
  8. <script type="text/javascript" src="js/jquery.js"></script>
  9. <title>XSServer</title>
  10. </head>
  11. <body>
  12. <div id="apiPage">
  13. <div id="apiHeader">
  14. <a href="http://www.xunsearch.com" target="_blank">Xunsearch PHP-SDK</a> v1.3.2 API 参考文档
  15. </div><!-- end of header -->
  16. <div id="content" class="api-index">
  17. <h1>XSServer</h1>
  18. <div id="nav">
  19. <a href="index.html">All Packages</a>
  20. | <a href="#properties">属性</a>
  21. | <a href="#methods">方法(函数)</a>
  22. </div>
  23. <table class="summaryTable docClass">
  24. <colgroup>
  25. <col class="col-name" />
  26. <col class="col-value" />
  27. </colgroup>
  28. <tr>
  29. <th>包</th>
  30. <td><a href="index.html#XS">XS</a></td>
  31. </tr>
  32. <tr>
  33. <th>继承关系</th>
  34. <td>class XSServer &raquo;
  35. <a href="XSComponent.html">XSComponent</a></td>
  36. </tr>
  37. <tr>
  38. <th>子类</th>
  39. <td><a href="XSIndex.html">XSIndex</a>, <a href="XSSearch.html">XSSearch</a></td>
  40. </tr>
  41. <tr>
  42. <th>版本</th>
  43. <td>1.0.0</td>
  44. </tr>
  45. <tr>
  46. <th>源代码</th>
  47. <td><a class="sourceLink" href="https://github.com/hightman/xunsearch/blob/master/sdk/php/lib/XSServer.class.php">sdk/php/lib/XSServer.class.php</a></td>
  48. </tr>
  49. </table>
  50. <div id="classDescription">
  51. XSServer 服务器操作对象
  52. 同时兼容于 indexd, searchd, 所有交互均采用 <a href="XSCommand.html">XSCommand</a> 对象</div>
  53. <a name="properties"></a>
  54. <div class="summary docProperty">
  55. <h2>Public 属性</h2>
  56. <p><a href="#" class="toggle">隐去继承来的属性</a></p>
  57. <table class="summaryTable">
  58. <colgroup>
  59. <col class="col-property" />
  60. <col class="col-type" />
  61. <col class="col-description" />
  62. <col class="col-defined" />
  63. </colgroup>
  64. <tr>
  65. <th>名称</th><th>类型</th><th>描述</th><th>定义于</th>
  66. </tr>
  67. <tr id="project">
  68. <td><a href="XSServer.html#project-detail">project</a></td>
  69. <td>string</td>
  70. <td>获取当前项目名称</td>
  71. <td>XSServer</td>
  72. </tr>
  73. <tr id="respond">
  74. <td><a href="XSServer.html#respond-detail">respond</a></td>
  75. <td><a href="XSCommand.html">XSCommand</a></td>
  76. <td>从服务器读取响应指令</td>
  77. <td>XSServer</td>
  78. </tr>
  79. <tr id="socket">
  80. <td><a href="XSServer.html#socket-detail">socket</a></td>
  81. <td>mixed</td>
  82. <td>获取连接资源描述符</td>
  83. <td>XSServer</td>
  84. </tr>
  85. <tr id="xs">
  86. <td><a href="XSServer.html#xs-detail">xs</a></td>
  87. <td><a href="XS.html">XS</a></td>
  88. <td>服务端关联的 XS 对象</td>
  89. <td>XSServer</td>
  90. </tr>
  91. </table>
  92. </div>
  93. <a name="methods"></a>
  94. <div class="summary docMethod">
  95. <h2>Public 方法</h2>
  96. <p><a href="#" class="toggle">隐去继承来的方法</a></p>
  97. <table class="summaryTable">
  98. <colgroup>
  99. <col class="col-method" />
  100. <col class="col-description" />
  101. <col class="col-defined" />
  102. </colgroup>
  103. <tr>
  104. <th>名称</th><th>描述</th><th>定义于</th>
  105. </tr>
  106. <tr id="__construct">
  107. <td><a href="XSServer.html#__construct-detail">__construct()</a></td>
  108. <td>构造函数, 打开连接</td>
  109. <td>XSServer</td>
  110. </tr>
  111. <tr id="__destruct">
  112. <td><a href="XSServer.html#__destruct-detail">__destruct()</a></td>
  113. <td>析构函数, 关闭连接</td>
  114. <td>XSServer</td>
  115. </tr>
  116. <tr class="inherited" id="__get">
  117. <td><a href="XSComponent.html#__get-detail">__get()</a></td>
  118. <td>魔术方法 __get</td>
  119. <td><a href="XSComponent.html">XSComponent</a></td>
  120. </tr>
  121. <tr class="inherited" id="__isset">
  122. <td><a href="XSComponent.html#__isset-detail">__isset()</a></td>
  123. <td>魔术方法 __isset</td>
  124. <td><a href="XSComponent.html">XSComponent</a></td>
  125. </tr>
  126. <tr class="inherited" id="__set">
  127. <td><a href="XSComponent.html#__set-detail">__set()</a></td>
  128. <td>魔术方法 __set</td>
  129. <td><a href="XSComponent.html">XSComponent</a></td>
  130. </tr>
  131. <tr class="inherited" id="__unset">
  132. <td><a href="XSComponent.html#__unset-detail">__unset()</a></td>
  133. <td>魔术方法 __unset</td>
  134. <td><a href="XSComponent.html">XSComponent</a></td>
  135. </tr>
  136. <tr id="close">
  137. <td><a href="XSServer.html#close-detail">close()</a></td>
  138. <td>关闭连接</td>
  139. <td>XSServer</td>
  140. </tr>
  141. <tr id="execCommand">
  142. <td><a href="XSServer.html#execCommand-detail">execCommand()</a></td>
  143. <td>执行服务端指令并获取返回值</td>
  144. <td>XSServer</td>
  145. </tr>
  146. <tr id="getProject">
  147. <td><a href="XSServer.html#getProject-detail">getProject()</a></td>
  148. <td>获取当前项目名称</td>
  149. <td>XSServer</td>
  150. </tr>
  151. <tr id="getRespond">
  152. <td><a href="XSServer.html#getRespond-detail">getRespond()</a></td>
  153. <td>从服务器读取响应指令</td>
  154. <td>XSServer</td>
  155. </tr>
  156. <tr id="getSocket">
  157. <td><a href="XSServer.html#getSocket-detail">getSocket()</a></td>
  158. <td>获取连接资源描述符</td>
  159. <td>XSServer</td>
  160. </tr>
  161. <tr id="hasRespond">
  162. <td><a href="XSServer.html#hasRespond-detail">hasRespond()</a></td>
  163. <td>判断服务端是否有可读数据</td>
  164. <td>XSServer</td>
  165. </tr>
  166. <tr id="open">
  167. <td><a href="XSServer.html#open-detail">open()</a></td>
  168. <td>打开服务端连接</td>
  169. <td>XSServer</td>
  170. </tr>
  171. <tr id="reopen">
  172. <td><a href="XSServer.html#reopen-detail">reopen()</a></td>
  173. <td>重新打开连接</td>
  174. <td>XSServer</td>
  175. </tr>
  176. <tr id="sendCommand">
  177. <td><a href="XSServer.html#sendCommand-detail">sendCommand()</a></td>
  178. <td>往服务器直接发送指令 (无缓存)</td>
  179. <td>XSServer</td>
  180. </tr>
  181. <tr id="setProject">
  182. <td><a href="XSServer.html#setProject-detail">setProject()</a></td>
  183. <td>设置当前项目</td>
  184. <td>XSServer</td>
  185. </tr>
  186. <tr id="setTimeout">
  187. <td><a href="XSServer.html#setTimeout-detail">setTimeout()</a></td>
  188. <td>设置服务端超时秒数</td>
  189. <td>XSServer</td>
  190. </tr>
  191. </table>
  192. </div>
  193. <a name="events"></a>
  194. <h2>属性明细</h2>
  195. <div class="detailHeader" id="project-detail">
  196. project<span class="detailHeaderTag">
  197. 属性
  198. </span>
  199. </div>
  200. <div class="signature">
  201. public string <a href="XSServer.html#getProject"><b>getProject</b></a>()<br/>public void <a href="XSServer.html#setProject"><b>setProject</b></a>(string $name, string $home='')</div>
  202. <p>获取当前项目名称</p>
  203. <div class="detailHeader" id="respond-detail">
  204. respond<span class="detailHeaderTag">
  205. 属性
  206. <em>只读</em> </span>
  207. </div>
  208. <div class="signature">
  209. public <a href="XSCommand.html">XSCommand</a> <a href="XSServer.html#getRespond"><b>getRespond</b></a>()</div>
  210. <p>从服务器读取响应指令</p>
  211. <div class="detailHeader" id="socket-detail">
  212. socket<span class="detailHeaderTag">
  213. 属性
  214. <em>只读</em> </span>
  215. </div>
  216. <div class="signature">
  217. public mixed <a href="XSServer.html#getSocket"><b>getSocket</b></a>()</div>
  218. <p>获取连接资源描述符</p>
  219. <div class="detailHeader" id="xs-detail">
  220. xs<span class="detailHeaderTag">
  221. 属性
  222. </span>
  223. </div>
  224. <div class="signature">
  225. public <a href="XS.html">XS</a> <b>$xs</b>;</div>
  226. <p>服务端关联的 XS 对象</p>
  227. <h2>方法明细</h2>
  228. <div class="detailHeader" id="__construct-detail">
  229. __construct()
  230. <span class="detailHeaderTag">
  231. 方法
  232. </span>
  233. </div>
  234. <table class="summaryTable">
  235. <tr><td colspan="3">
  236. <div class="signature2">
  237. public void <b>__construct</b>(string $conn=NULL, <a href="XS.html">XS</a> $xs=NULL)</div>
  238. </td></tr>
  239. <tr>
  240. <td class="paramNameCol">$conn</td>
  241. <td class="paramTypeCol">string</td>
  242. <td class="paramDescCol">服务端连接参数</td>
  243. </tr>
  244. <tr>
  245. <td class="paramNameCol">$xs</td>
  246. <td class="paramTypeCol"><a href="XS.html">XS</a></td>
  247. <td class="paramDescCol">需要捆绑的 xs 对象</td>
  248. </tr>
  249. </table>
  250. <div class="sourceCode">
  251. <b>源码:</b> <a class="sourceLink" href="https://github.com/hightman/xunsearch/blob/master/sdk/php/lib/XSServer.class.php#L140">sdk/php/lib/XSServer.class.php#L140</a> (<b><a href="#" class="show">显示</a></b>)
  252. <div class="code"><code><span style="color: #000000">
  253. <span style="color: #0000BB"></span><span style="color: #007700">public&nbsp;function&nbsp;</span><span style="color: #0000BB">__construct</span><span style="color: #007700">(</span><span style="color: #0000BB">$conn&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">null</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$xs&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">null</span><span style="color: #007700">)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">xs&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$xs</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #0000BB">$conn&nbsp;</span><span style="color: #007700">!==&nbsp;</span><span style="color: #0000BB">null</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">open</span><span style="color: #007700">(</span><span style="color: #0000BB">$conn</span><span style="color: #007700">);<br />}</span>
  254. </span>
  255. </code></div>
  256. </div>
  257. <p>构造函数, 打开连接</p>
  258. <div class="detailHeader" id="__destruct-detail">
  259. __destruct()
  260. <span class="detailHeaderTag">
  261. 方法
  262. </span>
  263. </div>
  264. <table class="summaryTable">
  265. <tr><td colspan="3">
  266. <div class="signature2">
  267. public void <b>__destruct</b>()</div>
  268. </td></tr>
  269. </table>
  270. <div class="sourceCode">
  271. <b>源码:</b> <a class="sourceLink" href="https://github.com/hightman/xunsearch/blob/master/sdk/php/lib/XSServer.class.php#L150">sdk/php/lib/XSServer.class.php#L150</a> (<b><a href="#" class="show">显示</a></b>)
  272. <div class="code"><code><span style="color: #000000">
  273. <span style="color: #0000BB"></span><span style="color: #007700">public&nbsp;function&nbsp;</span><span style="color: #0000BB">__destruct</span><span style="color: #007700">()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">xs&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">null</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">close</span><span style="color: #007700">();<br />}</span>
  274. </span>
  275. </code></div>
  276. </div>
  277. <p>析构函数, 关闭连接</p>
  278. <div class="detailHeader" id="close-detail">
  279. close()
  280. <span class="detailHeaderTag">
  281. 方法
  282. </span>
  283. </div>
  284. <table class="summaryTable">
  285. <tr><td colspan="3">
  286. <div class="signature2">
  287. public void <b>close</b>(bool $ioerr=false)</div>
  288. </td></tr>
  289. <tr>
  290. <td class="paramNameCol">$ioerr</td>
  291. <td class="paramTypeCol">bool</td>
  292. <td class="paramDescCol">关闭调用是否由于 IO 错误引起的, 以免发送 quit 指令</td>
  293. </tr>
  294. </table>
  295. <div class="sourceCode">
  296. <b>源码:</b> <a class="sourceLink" href="https://github.com/hightman/xunsearch/blob/master/sdk/php/lib/XSServer.class.php#L192">sdk/php/lib/XSServer.class.php#L192</a> (<b><a href="#" class="show">显示</a></b>)
  297. <div class="code"><code><span style="color: #000000">
  298. <span style="color: #0000BB"></span><span style="color: #007700">public&nbsp;function&nbsp;</span><span style="color: #0000BB">close</span><span style="color: #007700">(</span><span style="color: #0000BB">$ioerr&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_sock&nbsp;</span><span style="color: #007700">&amp;&amp;&nbsp;!(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_flag&nbsp;</span><span style="color: #007700">&amp;&nbsp;</span><span style="color: #0000BB">self</span><span style="color: #007700">::</span><span style="color: #0000BB">BROKEN</span><span style="color: #007700">))<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!</span><span style="color: #0000BB">$ioerr&nbsp;</span><span style="color: #007700">&amp;&amp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_sendBuffer&nbsp;</span><span style="color: #007700">!==&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">write</span><span style="color: #007700">(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_sendBuffer</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_sendBuffer&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!</span><span style="color: #0000BB">$ioerr&nbsp;</span><span style="color: #007700">&amp;&amp;&nbsp;!(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_flag&nbsp;</span><span style="color: #007700">&amp;&nbsp;</span><span style="color: #0000BB">self</span><span style="color: #007700">::</span><span style="color: #0000BB">FILE</span><span style="color: #007700">))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$cmd&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">XSCommand</span><span style="color: #007700">(</span><span style="color: #0000BB">CMD_QUIT</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">fwrite</span><span style="color: #007700">(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_sock</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$cmd</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">fclose</span><span style="color: #007700">(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_sock</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_flag&nbsp;</span><span style="color: #007700">|=&nbsp;</span><span style="color: #0000BB">self</span><span style="color: #007700">::</span><span style="color: #0000BB">BROKEN</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</span>
  299. </span>
  300. </code></div>
  301. </div>
  302. <p>关闭连接
  303. 附带发送发送 quit 命令</p>
  304. <div class="detailHeader" id="execCommand-detail">
  305. execCommand()
  306. <span class="detailHeaderTag">
  307. 方法
  308. </span>
  309. </div>
  310. <table class="summaryTable">
  311. <tr><td colspan="3">
  312. <div class="signature2">
  313. public mixed <b>execCommand</b>(mixed $cmd, int $res_arg=0, int $res_cmd=128)</div>
  314. </td></tr>
  315. <tr>
  316. <td class="paramNameCol">$cmd</td>
  317. <td class="paramTypeCol">mixed</td>
  318. <td class="paramDescCol">要提交的指令, 若不是 XSCommand 实例则作为构造函数的第一参数创建对象</td>
  319. </tr>
  320. <tr>
  321. <td class="paramNameCol">$res_arg</td>
  322. <td class="paramTypeCol">int</td>
  323. <td class="paramDescCol">要求的响应参数, 默认为 CMD_NONE 即不检测, 若检测结果不符
  324. 则认为命令调用失败, 会返回 false 并设置相应的出错信息</td>
  325. </tr>
  326. <tr>
  327. <td class="paramNameCol">$res_cmd</td>
  328. <td class="paramTypeCol">int</td>
  329. <td class="paramDescCol">要求的响应指令, 默认为 CMD_OK 即要求结果必须正确.</td>
  330. </tr>
  331. <tr>
  332. <td class="paramNameCol">{return}</td>
  333. <td class="paramTypeCol">mixed</td>
  334. <td class="paramDescCol">若无需要检测结果则返回 true, 其它返回响应的 XSCommand 对象</td>
  335. </tr>
  336. </table>
  337. <div class="sourceCode">
  338. <b>源码:</b> <a class="sourceLink" href="https://github.com/hightman/xunsearch/blob/master/sdk/php/lib/XSServer.class.php#L263">sdk/php/lib/XSServer.class.php#L263</a> (<b><a href="#" class="show">显示</a></b>)
  339. <div class="code"><code><span style="color: #000000">
  340. <span style="color: #0000BB"></span><span style="color: #007700">public&nbsp;function&nbsp;</span><span style="color: #0000BB">execCommand</span><span style="color: #007700">(</span><span style="color: #0000BB">$cmd</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$res_arg&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">CMD_NONE</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$res_cmd&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">CMD_OK</span><span style="color: #007700">)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;create&nbsp;command&nbsp;object<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">if&nbsp;(!</span><span style="color: #0000BB">$cmd&nbsp;</span><span style="color: #007700">instanceof&nbsp;</span><span style="color: #0000BB">XSCommand</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$cmd&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">XSCommand</span><span style="color: #007700">(</span><span style="color: #0000BB">$cmd</span><span style="color: #007700">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;just&nbsp;cache&nbsp;the&nbsp;cmd&nbsp;for&nbsp;those&nbsp;need&nbsp;not&nbsp;answer<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">if&nbsp;(</span><span style="color: #0000BB">$cmd</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">cmd&nbsp;</span><span style="color: #007700">&amp;&nbsp;</span><span style="color: #0000BB">0x80</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_sendBuffer&nbsp;</span><span style="color: #007700">.=&nbsp;</span><span style="color: #0000BB">$cmd</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;send&nbsp;cmd&nbsp;to&nbsp;server<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$buf&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_sendBuffer&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$cmd</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_sendBuffer&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">write</span><span style="color: #007700">(</span><span style="color: #0000BB">$buf</span><span style="color: #007700">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;return&nbsp;true&nbsp;directly&nbsp;for&nbsp;local&nbsp;file<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">if&nbsp;(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_flag&nbsp;</span><span style="color: #007700">&amp;&nbsp;</span><span style="color: #0000BB">self</span><span style="color: #007700">::</span><span style="color: #0000BB">FILE</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;got&nbsp;the&nbsp;respond<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$res&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getRespond</span><span style="color: #007700">();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;check&nbsp;respond<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">if&nbsp;(</span><span style="color: #0000BB">$res</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">cmd&nbsp;</span><span style="color: #007700">===&nbsp;</span><span style="color: #0000BB">CMD_ERR&nbsp;</span><span style="color: #007700">&amp;&amp;&nbsp;</span><span style="color: #0000BB">$res_cmd&nbsp;</span><span style="color: #007700">!=&nbsp;</span><span style="color: #0000BB">CMD_ERR</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw&nbsp;new&nbsp;</span><span style="color: #0000BB">XSException</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">buf</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$res</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">arg</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;got&nbsp;unexpected&nbsp;respond&nbsp;command<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">if&nbsp;(</span><span style="color: #0000BB">$res</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">cmd&nbsp;</span><span style="color: #007700">!=&nbsp;</span><span style="color: #0000BB">$res_cmd&nbsp;</span><span style="color: #007700">||&nbsp;(</span><span style="color: #0000BB">$res_arg&nbsp;</span><span style="color: #007700">!=&nbsp;</span><span style="color: #0000BB">CMD_NONE&nbsp;</span><span style="color: #007700">&amp;&amp;&nbsp;</span><span style="color: #0000BB">$res</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">arg&nbsp;</span><span style="color: #007700">!=&nbsp;</span><span style="color: #0000BB">$res_arg</span><span style="color: #007700">))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw&nbsp;new&nbsp;</span><span style="color: #0000BB">XSException</span><span style="color: #007700">(</span><span style="color: #DD0000">'Unexpected&nbsp;respond&nbsp;{CMD:'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$res</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">cmd&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">',&nbsp;ARG:'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$res</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">arg&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">'}'</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">$res</span><span style="color: #007700">;<br />}</span>
  341. </span>
  342. </code></div>
  343. </div>
  344. <p>执行服务端指令并获取返回值</p>
  345. <div class="detailHeader" id="getProject-detail">
  346. getProject()
  347. <span class="detailHeaderTag">
  348. 方法
  349. </span>
  350. </div>
  351. <table class="summaryTable">
  352. <tr><td colspan="3">
  353. <div class="signature2">
  354. public string <b>getProject</b>()</div>
  355. </td></tr>
  356. <tr>
  357. <td class="paramNameCol">{return}</td>
  358. <td class="paramTypeCol">string</td>
  359. <td class="paramDescCol">项目名称</td>
  360. </tr>
  361. </table>
  362. <div class="sourceCode">
  363. <b>源码:</b> <a class="sourceLink" href="https://github.com/hightman/xunsearch/blob/master/sdk/php/lib/XSServer.class.php#L224">sdk/php/lib/XSServer.class.php#L224</a> (<b><a href="#" class="show">显示</a></b>)
  364. <div class="code"><code><span style="color: #000000">
  365. <span style="color: #0000BB"></span><span style="color: #007700">public&nbsp;function&nbsp;</span><span style="color: #0000BB">getProject</span><span style="color: #007700">()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_project</span><span style="color: #007700">;<br />}</span>
  366. </span>
  367. </code></div>
  368. </div>
  369. <p>获取当前项目名称</p>
  370. <div class="detailHeader" id="getRespond-detail">
  371. getRespond()
  372. <span class="detailHeaderTag">
  373. 方法
  374. </span>
  375. </div>
  376. <table class="summaryTable">
  377. <tr><td colspan="3">
  378. <div class="signature2">
  379. public <a href="XSCommand.html">XSCommand</a> <b>getRespond</b>()</div>
  380. </td></tr>
  381. <tr>
  382. <td class="paramNameCol">{return}</td>
  383. <td class="paramTypeCol"><a href="XSCommand.html">XSCommand</a></td>
  384. <td class="paramDescCol">成功返回响应指令</td>
  385. </tr>
  386. </table>
  387. <div class="sourceCode">
  388. <b>源码:</b> <a class="sourceLink" href="https://github.com/hightman/xunsearch/blob/master/sdk/php/lib/XSServer.class.php#L314">sdk/php/lib/XSServer.class.php#L314</a> (<b><a href="#" class="show">显示</a></b>)
  389. <div class="code"><code><span style="color: #000000">
  390. <span style="color: #0000BB"></span><span style="color: #007700">public&nbsp;function&nbsp;</span><span style="color: #0000BB">getRespond</span><span style="color: #007700">()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;read&nbsp;data&nbsp;from&nbsp;server<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$buf&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">read</span><span style="color: #007700">(</span><span style="color: #0000BB">8</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$hdr&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">unpack</span><span style="color: #007700">(</span><span style="color: #DD0000">'Ccmd/Carg1/Carg2/Cblen1/Iblen'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$buf</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$res&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">XSCommand</span><span style="color: #007700">(</span><span style="color: #0000BB">$hdr</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$res</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">buf&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">read</span><span style="color: #007700">(</span><span style="color: #0000BB">$hdr</span><span style="color: #007700">[</span><span style="color: #DD0000">'blen'</span><span style="color: #007700">]);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$res</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">buf1&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">read</span><span style="color: #007700">(</span><span style="color: #0000BB">$hdr</span><span style="color: #007700">[</span><span style="color: #DD0000">'blen1'</span><span style="color: #007700">]);<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">$res</span><span style="color: #007700">;<br />}</span>
  391. </span>
  392. </code></div>
  393. </div>
  394. <p>从服务器读取响应指令</p>
  395. <div class="detailHeader" id="getSocket-detail">
  396. getSocket()
  397. <span class="detailHeaderTag">
  398. 方法
  399. </span>
  400. </div>
  401. <table class="summaryTable">
  402. <tr><td colspan="3">
  403. <div class="signature2">
  404. public mixed <b>getSocket</b>()</div>
  405. </td></tr>
  406. <tr>
  407. <td class="paramNameCol">{return}</td>
  408. <td class="paramTypeCol">mixed</td>
  409. <td class="paramDescCol">连接标识, 仅用于内部测试等目的</td>
  410. </tr>
  411. </table>
  412. <div class="sourceCode">
  413. <b>源码:</b> <a class="sourceLink" href="https://github.com/hightman/xunsearch/blob/master/sdk/php/lib/XSServer.class.php#L215">sdk/php/lib/XSServer.class.php#L215</a> (<b><a href="#" class="show">显示</a></b>)
  414. <div class="code"><code><span style="color: #000000">
  415. <span style="color: #0000BB"></span><span style="color: #007700">public&nbsp;function&nbsp;</span><span style="color: #0000BB">getSocket</span><span style="color: #007700">()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_sock</span><span style="color: #007700">;<br />}</span>
  416. </span>
  417. </code></div>
  418. </div>
  419. <p>获取连接资源描述符</p>
  420. <div class="detailHeader" id="hasRespond-detail">
  421. hasRespond()
  422. <span class="detailHeaderTag">
  423. 方法
  424. </span>
  425. </div>
  426. <table class="summaryTable">
  427. <tr><td colspan="3">
  428. <div class="signature2">
  429. public bool <b>hasRespond</b>()</div>
  430. </td></tr>
  431. <tr>
  432. <td class="paramNameCol">{return}</td>
  433. <td class="paramTypeCol">bool</td>
  434. <td class="paramDescCol">如果有返回 true, 否则返回 false</td>
  435. </tr>
  436. </table>
  437. <div class="sourceCode">
  438. <b>源码:</b> <a class="sourceLink" href="https://github.com/hightman/xunsearch/blob/master/sdk/php/lib/XSServer.class.php#L330">sdk/php/lib/XSServer.class.php#L330</a> (<b><a href="#" class="show">显示</a></b>)
  439. <div class="code"><code><span style="color: #000000">
  440. <span style="color: #0000BB"></span><span style="color: #007700">public&nbsp;function&nbsp;</span><span style="color: #0000BB">hasRespond</span><span style="color: #007700">()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;check&nbsp;socket<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">if&nbsp;(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_sock&nbsp;</span><span style="color: #007700">===&nbsp;</span><span style="color: #0000BB">null&nbsp;</span><span style="color: #007700">||&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_flag&nbsp;</span><span style="color: #007700">&amp;&nbsp;(</span><span style="color: #0000BB">self</span><span style="color: #007700">::</span><span style="color: #0000BB">BROKEN&nbsp;</span><span style="color: #007700">|&nbsp;</span><span style="color: #0000BB">self</span><span style="color: #007700">::</span><span style="color: #0000BB">FILE</span><span style="color: #007700">))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$wfds&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$xfds&nbsp;</span><span style="color: #007700">=&nbsp;array();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$rfds&nbsp;</span><span style="color: #007700">=&nbsp;array(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_sock</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$res&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">stream_select</span><span style="color: #007700">(</span><span style="color: #0000BB">$rfds</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$wfds</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$xfds</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">$res&nbsp;</span><span style="color: #007700">&gt;&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">;<br />}</span>
  441. </span>
  442. </code></div>
  443. </div>
  444. <p>判断服务端是否有可读数据
  445. 用于某些特别情况在 <a href="XSServer.html#getRespond">getRespond</a> 前先调用和判断, 以免阻塞</p>
  446. <div class="detailHeader" id="open-detail">
  447. open()
  448. <span class="detailHeaderTag">
  449. 方法
  450. </span>
  451. </div>
  452. <table class="summaryTable">
  453. <tr><td colspan="3">
  454. <div class="signature2">
  455. public void <b>open</b>(mixed $conn)</div>
  456. </td></tr>
  457. <tr>
  458. <td class="paramNameCol">$conn</td>
  459. <td class="paramTypeCol">mixed</td>
  460. <td class="paramDescCol">服务端连接参数, 支持: &lt;端口号|host:port|本地套接字路径&gt;</td>
  461. </tr>
  462. </table>
  463. <div class="sourceCode">
  464. <b>源码:</b> <a class="sourceLink" href="https://github.com/hightman/xunsearch/blob/master/sdk/php/lib/XSServer.class.php#L161">sdk/php/lib/XSServer.class.php#L161</a> (<b><a href="#" class="show">显示</a></b>)
  465. <div class="code"><code><span style="color: #000000">
  466. <span style="color: #0000BB"></span><span style="color: #007700">public&nbsp;function&nbsp;</span><span style="color: #0000BB">open</span><span style="color: #007700">(</span><span style="color: #0000BB">$conn</span><span style="color: #007700">)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">close</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_conn&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$conn</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_flag&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">self</span><span style="color: #007700">::</span><span style="color: #0000BB">BROKEN</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_sendBuffer&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_project&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">null</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">connect</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_flag&nbsp;</span><span style="color: #007700">^=&nbsp;</span><span style="color: #0000BB">self</span><span style="color: #007700">::</span><span style="color: #0000BB">BROKEN</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">xs&nbsp;</span><span style="color: #007700">instanceof&nbsp;</span><span style="color: #0000BB">XS</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setProject</span><span style="color: #007700">(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">xs</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getName</span><span style="color: #007700">());<br />}</span>
  467. </span>
  468. </code></div>
  469. </div>
  470. <p>打开服务端连接
  471. 如果已关联 XS 对象, 则会同时切换至相应的项目名称</p>
  472. <div class="detailHeader" id="reopen-detail">
  473. reopen()
  474. <span class="detailHeaderTag">
  475. 方法
  476. </span>
  477. </div>
  478. <table class="summaryTable">
  479. <tr><td colspan="3">
  480. <div class="signature2">
  481. public XSServer <b>reopen</b>(bool $force=false)</div>
  482. </td></tr>
  483. <tr>
  484. <td class="paramNameCol">$force</td>
  485. <td class="paramTypeCol">bool</td>
  486. <td class="paramDescCol">是否强制重新连接, 默认为否</td>
  487. </tr>
  488. <tr>
  489. <td class="paramNameCol">{return}</td>
  490. <td class="paramTypeCol">XSServer</td>
  491. <td class="paramDescCol">返回自己, 以便串接操作</td>
  492. </tr>
  493. </table>
  494. <div class="sourceCode">
  495. <b>源码:</b> <a class="sourceLink" href="https://github.com/hightman/xunsearch/blob/master/sdk/php/lib/XSServer.class.php#L180">sdk/php/lib/XSServer.class.php#L180</a> (<b><a href="#" class="show">显示</a></b>)
  496. <div class="code"><code><span style="color: #000000">
  497. <span style="color: #0000BB"></span><span style="color: #007700">public&nbsp;function&nbsp;</span><span style="color: #0000BB">reopen</span><span style="color: #007700">(</span><span style="color: #0000BB">$force&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_flag&nbsp;</span><span style="color: #007700">&amp;&nbsp;</span><span style="color: #0000BB">self</span><span style="color: #007700">::</span><span style="color: #0000BB">BROKEN&nbsp;</span><span style="color: #007700">||&nbsp;</span><span style="color: #0000BB">$force&nbsp;</span><span style="color: #007700">===&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">open</span><span style="color: #007700">(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_conn</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">;<br />}</span>
  498. </span>
  499. </code></div>
  500. </div>
  501. <p>重新打开连接
  502. 仅应用于曾经成功打开的连并且异常关闭了</p>
  503. <div class="detailHeader" id="sendCommand-detail">
  504. sendCommand()
  505. <span class="detailHeaderTag">
  506. 方法
  507. </span>
  508. </div>
  509. <table class="summaryTable">
  510. <tr><td colspan="3">
  511. <div class="signature2">
  512. public void <b>sendCommand</b>(mixed $cmd)</div>
  513. </td></tr>
  514. <tr>
  515. <td class="paramNameCol">$cmd</td>
  516. <td class="paramTypeCol">mixed</td>
  517. <td class="paramDescCol">要提交的指令, 支持 XSCommand 实例或 cmd 构造函数的第一参数</td>
  518. </tr>
  519. </table>
  520. <div class="sourceCode">
  521. <b>源码:</b> <a class="sourceLink" href="https://github.com/hightman/xunsearch/blob/master/sdk/php/lib/XSServer.class.php#L302">sdk/php/lib/XSServer.class.php#L302</a> (<b><a href="#" class="show">显示</a></b>)
  522. <div class="code"><code><span style="color: #000000">
  523. <span style="color: #0000BB"></span><span style="color: #007700">public&nbsp;function&nbsp;</span><span style="color: #0000BB">sendCommand</span><span style="color: #007700">(</span><span style="color: #0000BB">$cmd</span><span style="color: #007700">)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!</span><span style="color: #0000BB">$cmd&nbsp;</span><span style="color: #007700">instanceof&nbsp;</span><span style="color: #0000BB">XSCommand</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$cmd&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">XSCommand</span><span style="color: #007700">(</span><span style="color: #0000BB">$cmd</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">write</span><span style="color: #007700">(</span><span style="color: #0000BB">strval</span><span style="color: #007700">(</span><span style="color: #0000BB">$cmd</span><span style="color: #007700">));<br />}</span>
  524. </span>
  525. </code></div>
  526. </div>
  527. <p>往服务器直接发送指令 (无缓存)</p>
  528. <div class="detailHeader" id="setProject-detail">
  529. setProject()
  530. <span class="detailHeaderTag">
  531. 方法
  532. </span>
  533. </div>
  534. <table class="summaryTable">
  535. <tr><td colspan="3">
  536. <div class="signature2">
  537. public void <b>setProject</b>(string $name, string $home='')</div>
  538. </td></tr>
  539. <tr>
  540. <td class="paramNameCol">$name</td>
  541. <td class="paramTypeCol">string</td>
  542. <td class="paramDescCol">项目名称</td>
  543. </tr>
  544. <tr>
  545. <td class="paramNameCol">$home</td>
  546. <td class="paramTypeCol">string</td>
  547. <td class="paramDescCol">项目在服务器上的目录路径, 可选参数(不得超过255字节).</td>
  548. </tr>
  549. </table>
  550. <div class="sourceCode">
  551. <b>源码:</b> <a class="sourceLink" href="https://github.com/hightman/xunsearch/blob/master/sdk/php/lib/XSServer.class.php#L234">sdk/php/lib/XSServer.class.php#L234</a> (<b><a href="#" class="show">显示</a></b>)
  552. <div class="code"><code><span style="color: #000000">
  553. <span style="color: #0000BB"></span><span style="color: #007700">public&nbsp;function&nbsp;</span><span style="color: #0000BB">setProject</span><span style="color: #007700">(</span><span style="color: #0000BB">$name</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$home&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #0000BB">$name&nbsp;</span><span style="color: #007700">!==&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_project</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$cmd&nbsp;</span><span style="color: #007700">=&nbsp;array(</span><span style="color: #DD0000">'cmd'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">CMD_USE</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'buf'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">$name</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'buf1'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">$home</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">execCommand</span><span style="color: #007700">(</span><span style="color: #0000BB">$cmd</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">CMD_OK_PROJECT</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_project&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$name</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</span>
  554. </span>
  555. </code></div>
  556. </div>
  557. <p>设置当前项目</p>
  558. <div class="detailHeader" id="setTimeout-detail">
  559. setTimeout()
  560. <span class="detailHeaderTag">
  561. 方法
  562. </span>
  563. </div>
  564. <table class="summaryTable">
  565. <tr><td colspan="3">
  566. <div class="signature2">
  567. public void <b>setTimeout</b>(int $sec)</div>
  568. </td></tr>
  569. <tr>
  570. <td class="paramNameCol">$sec</td>
  571. <td class="paramTypeCol">int</td>
  572. <td class="paramDescCol">秒数, 设为 0则永不超时直到客户端主动关闭</td>
  573. </tr>
  574. </table>
  575. <div class="sourceCode">
  576. <b>源码:</b> <a class="sourceLink" href="https://github.com/hightman/xunsearch/blob/master/sdk/php/lib/XSServer.class.php#L248">sdk/php/lib/XSServer.class.php#L248</a> (<b><a href="#" class="show">显示</a></b>)
  577. <div class="code"><code><span style="color: #000000">
  578. <span style="color: #0000BB"></span><span style="color: #007700">public&nbsp;function&nbsp;</span><span style="color: #0000BB">setTimeout</span><span style="color: #007700">(</span><span style="color: #0000BB">$sec</span><span style="color: #007700">)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$cmd&nbsp;</span><span style="color: #007700">=&nbsp;array(</span><span style="color: #DD0000">'cmd'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">CMD_TIMEOUT</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'arg'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">$sec</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">execCommand</span><span style="color: #007700">(</span><span style="color: #0000BB">$cmd</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">CMD_OK_TIMEOUT_SET</span><span style="color: #007700">);<br />}</span>
  579. </span>
  580. </code></div>
  581. </div>
  582. <p>设置服务端超时秒数</p>
  583. </div><!-- end of content -->
  584. <div id="apiFooter">
  585. Copyright &copy; 2008-2011 by <a href="http://www.xunsearch.com" target="_blank">杭州云圣网络科技有限公司</a><br/>
  586. All Rights Reserved.<br/>
  587. </div><!-- end of footer -->
  588. <script type="text/javascript">
  589. /*<![CDATA[*/
  590. $("a.toggle").toggle(function(){
  591. $(this).text($(this).text().replace(/Hide/,'Show'));
  592. $(this).parents(".summary").find(".inherited").hide();
  593. },function(){
  594. $(this).text($(this).text().replace(/Show/,'Hide'));
  595. $(this).parents(".summary").find(".inherited").show();
  596. });
  597. $(".sourceCode a.show").toggle(function(){
  598. $(this).text($(this).text().replace(/show/,'hide'));
  599. $(this).parents(".sourceCode").find("div.code").show();
  600. },function(){
  601. $(this).text($(this).text().replace(/hide/,'show'));
  602. $(this).parents(".sourceCode").find("div.code").hide();
  603. });
  604. $("a.sourceLink").click(function(){
  605. $(this).attr('target','_blank');
  606. });
  607. /*]]>*/
  608. </script>
  609. </div><!-- end of page -->
  610. </body>
  611. </html>