码迷,mamicode.com
首页 > 数据库 > 详细

用swoole实现mysql的连接池--摘自https://github.com/153734009/doc/blob/master/php/mysql_pool.php

时间:2017-11-03 15:18:31      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:lin   客户   stat   github   new   ror   需要   from   tpi   

<?php
  $serv = new swoole_server("0.0.0.0", 9508);
  $serv->set([‘worker_num=>1, ‘task_worker_num=>5]);
  function onReceive($serv, $fd, $from_id, $data)
  {
  $sql = $data;
  $result = $serv->taskwait($sql);
  if($result !== false){
  $serv->send($fd, $result . "\n");
  }else{
  $serv->send($fd, "Err:Task timeout\n");
  }
  //异步的时候就麻烦了,需要把$fd传递到onFinish,才能send数据到
  //$serv->task($sql);
  }
  /**
  * task保持数据库连接
  * 使用静态变量,因为变量没有释放,所以才能保持连接
  * mysql连接的数量= task_worker_num
  */
  function onTask($serv, $fd, $from_id, $sql)
  {
  static $conn = null;
  if($conn == null){
  $conn = mysqli_connect(‘127.0.0.1‘, ‘root‘, ‘123456‘, ‘help‘);
  if(!$conn){
  $conn = null;
  $serv->finish(‘ERR:.mysqli_connect_error());
  return;
  }
  }
  $result = $conn->query($sql);
  if(!$result){
  $serv->finish(‘ERR:.mysqli_error($conn));
  return;
  }
  $data = $result->fetch_all(MYSQLI_ASSOC);
  $serv->finish(‘OK:.serialize($data));
  }
  function onFinish($serv, $task_id, $data)
  {
  // 异步Task时有效
  echo "AsyncTask Finish:Connect.PID=".posix_getpid().PHP_EOL;
  }
  $serv->on(‘Receive‘, ‘onReceive‘);
  $serv->on(‘Task‘, ‘onTask‘);
  $serv->on(‘Finish‘, ‘onFinish‘);
  $serv->start();
   
  //以下是客户端代码
  //$client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC); //同步阻塞
  //$client->connect(‘172.18.107.194‘, 9508, 0.5, 0);
  //$client->send("show tables");
  //$data = $client->recv();
   
  /**
  * 查看mysql连接
  *
  * 1. mysql -uroot -p123456
  * 2. show status;
  * 其中的
  * Threads_connected | 1
  * 就是mysql连接数
  */

用swoole实现mysql的连接池--摘自https://github.com/153734009/doc/blob/master/php/mysql_pool.php

标签:lin   客户   stat   github   new   ror   需要   from   tpi   

原文地址:http://www.cnblogs.com/si812cn/p/7777997.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!