public function doSQL($link, $result)
{
$data_select = array('status' => 'ok', 'error' => 0, 'errormsg' => '', 'result' => '');
$db_sock = $link->sock;
$db_res = $this->busy_pool[$db_sock];
$mysqli = $db_res['mysqli'];
$fd = $db_res['fd'];
if ($result) {
if (is_array($result)) {
$data_select['result'] = $result;
$this->http->send($fd, json_encode($data_select));
} else {
$data_select['result'] = $link->affected_rows;
$this->http->send($fd, json_encode($data_select));
}
} else {
$data_select['error'] = 1;
$data_select['status'] = 'error';
$data_select['result'] = array();
$this->http->send($fd, json_encode($data_select));
}
array_unshift($this->idle_pool, $db_res);
unset($this->busy_pool[$db_sock]);
//$data_select=array('status' =>'ok','error'=>0,'errormsg'=>'','result'=>'');
//这里可以取出一个等待请求
if (count($this->wait_queue) > 0) {
$idle_n = count($this->idle_pool);
for ($i = 0; $i < $idle_n; $i++) {
$req = array_shift($this->wait_queue);
$this->doQuery($req['fd'], $req['sql']);
}
}
/*if ($result = $mysqli->reap_async_query()) {
if (is_object($result)){
$data_result=$result->fetch_all(MYSQLI_ASSOC);
mysqli_free_result($result);
} else {
$data_result=$result;
}
$data_select['result']=$data_result;
$this->http->send($fd,json_encode($data_select));
} else {
$data_select['error']=1;
$data_select['status']='error';
// $data_select['errormsg']=sprintf("MySQLi Error: %s\n", mysqli_error($mysqli));
$data_select['result']=array();
$this->http->send($fd,json_encode($data_select));
}*/
//release mysqli object
//$this->idle_pool[] = $db_res;
}