swoole编译安装/数据库连接池/异步mysql客户端

一.编译安装php5.6

0.安装必要软件

http://www.cnblogs.com/itfenqing/p/6055138.html

1.下载php5.6.30

http://php.net/downloads.php

2.解压

3.编译时指定为mysqlnt,启用opcache

./configure --prefix=/usr/local/php56  --enable-fpm
--enable-mysqlnd --with-mysqli=mysqlnd
--with-mysql=mysqlnd --with-pdo-mysql=mysqlnd
--enable-debug --with-gd --with-jpeg-dir
--with-png-dir --with-freetype-dir
--enable-mbstring --with-curl
--with-libxml-dir --with-mysql
--enable-sockets --enable-bcmath
--enable-xml --with-bz2 --enable-zip
--enable-freetype --with-pdo-mysql
--with-mcrypt --enable-opcache

二.编译swoole

1.下载swoole1.9.0

2.解压

3.安装

/usr/local/php56/bin/phpize
./configure --with-php-config=/usr/local/php56/bin/php-config
make
make install

  

4.拷贝php.ini-production到/usr/local/php56/php.ini

5.在/usr/local/php56/php.ini下加入

[Zend Opcache]
zend_extension = /usr/local/php56/lib/php/extensions/debug-non-zts-20131226/opcache.so
opcache.enable=1 ;#启用操作码缓存
opcache.enable_cli=1 ;#仅针对CLI环境启用操作码缓存
opcache.memory_consumption=128 ;#共享内存大小,单位MB
opcache.interned_strings_buffer=8 ;#存储临时字符串的内存大小,单位MB
opcache.max_accelerated_files=4000 ;#哈希表中可存储的脚本文件数量上限

[Swoole]
extension = /usr/local/php56/lib/php/extensions/debug-non-zts-20131226/swoole.so

  

三.swoole数据库连接池

1.服务端代码:

<?php
$serv = new swoole_server("127.0.0.1", 9508);
$serv->set(array(
    ‘worker_num‘ => 100,
    ‘task_worker_num‘ => 10, //MySQL连接的数量
));

function my_onReceive($serv, $fd, $from_id, $data)
{
    //taskwait就是投递一条任务,这里直接传递SQL语句了
    //然后阻塞等待SQL完成
    $result = $serv->taskwait($data);
    if ($result !== false) {
        list($status, $db_res) = explode(‘:‘, $result, 2);
        if ($status == ‘OK‘) {
            //数据库操作成功了,执行业务逻辑代码,这里就自动释放掉MySQL连接的占用
            $serv->send($fd, var_export(unserialize($db_res), true) . "\n");
        } else {
            $serv->send($fd, $db_res);
        }
        return;
    } else {
        $serv->send($fd, "Error. Task timeout\n");
    }
}

function my_onTask($serv, $task_id, $from_id, $sql)
{
    static $link = null;
    if ($link == null) {
        $link = new mysqli("192.168.2.15", "root", "root", "test");
        if (!$link) {
            $link = null;
            $serv->finish("ER:" . mysqli_error($link));
            return;
        }
    }
    $result = $link->query($sql);
    if (!$result) {
        $serv->finish("ER:" . mysqli_error($link));
        return;
    }
    $data = $result->fetch_all(MYSQLI_ASSOC);
    $serv->finish("OK:" . serialize($data));
}

function my_onFinish($serv, $data)
{
    echo "AsyncTask Finish:Connect.PID=" . posix_getpid() . PHP_EOL;
}

$serv->on(‘Receive‘, ‘my_onReceive‘);
$serv->on(‘Task‘, ‘my_onTask‘);
$serv->on(‘Finish‘, ‘my_onFinish‘);
$serv->start();

  

2.客户端代码

<?php
$link=new swoole_client(SWOOLE_SOCK_TCP,SWOOLE_SOCK_SYNC);//TCP方式、同步
$link->connect(‘127.0.0.1‘,9508);//连接
$link->send(‘SELECT * FROM `test2`‘);//执行查询
$res=$link->recv();

if(!$res){
    echo ‘Failed!‘;
}
else{
    print_r($res);
}
$link->close();

  

三.异步mysql客户端

<?php

$db = new swoole_mysql;
$server = array(
    ‘host‘ => ‘192.168.2.15‘,
    ‘port‘ => ‘3306‘,
    ‘user‘ => ‘root‘,
    ‘password‘ => ‘root‘,
    ‘database‘ => ‘test‘,
    ‘charset‘ => ‘utf8‘, //指定字符集
    ‘timeout‘ => 30,
);

$db->connect($server, function ($db, $r) {
    if ($r === false) {
        var_dump($db->connect_errno, $db->connect_error);
        die;
    }
    $sql = ‘select *,sleep(5) from test2‘;
    $db->query($sql, function (swoole_mysql $db, $r) {
        if ($r === false) {
            var_dump($db->error, $db->errno);
        } elseif ($r === true) {
            var_dump($db->affected_rows, $db->insert_id);
        }
        var_dump($r);
        $db->close();
    });
});

echo ‘ok‘;

  

以上代码先输出ok,在输出mysql查询结果

  

时间: 2024-10-17 19:24:12

swoole编译安装/数据库连接池/异步mysql客户端的相关文章

LAMP编译安装之Apache+php+mysql

环境模型: (1)PHP作为apache的模块编译安装. (2)mysql数据库在另一台服务器上安装.版本为MariaDB5.5.33    IP:192.168.1.124 (3)PHP版本5.4.36,http的版本2.4 (4)安装Apache和php的主机IP为192.168.1.123. 一.编译安装apache    1.解决依赖关系     httpd-2.4.9需要较新版本的apr和apr-util,因此需要事先对其进行升级.升级方式有两种,一种是通过源代码编译安装,一种是直接升

DBCP数据库连接池连接mysql数据库的时候 出现连接问题

在部署的项目的时候发现两个问题 ,第一个问题不是太容易发现 ,因为我部署的时候没问题 ,但是产品的同事在跑流程的时候总是出现一个connetException异常  自己看了半天没发现什么问题 去网上查了一下 说是msql的连接默认是八个小时 第二个问题就是 自己这边的数据库 隔一段时间不用的话 会自动断开  查了一下资料 是dbcp连接mysql时出现的这个问题  实际上两个问题算是一个问题吧 自己配置了一下 这几天没报这样的错误 !算是解决了吧!  <bean id="dataSour

Myeclipse WEB工程JSP使用JNDI 数据库连接池连接Mysql数据库

在网上查了很多,最后实现了.下面写一下过程: 首先,在WEBROOT/META-INF下建一个文件context.xml,内容为: <?xml version="1.0" encoding="UTF-8"?> <Context> <Resource name="jdbc/ConnectionPool" auth="Application" type="javax.sql.DataSour

centos6.6编译安装lnmp系列之mysql

简介: 环境:虚拟机+centos6.6 Mysql版本:5.6.21 Mysql下载地址:http://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.21.tar.gz Cmake下载地址:http://www.cmake.org/files/v3.0/cmake-3.0.2.tar.gz 1.安装前配置: vi /etc/sysconfig/iptables     开启防火墙端口 -A INPUT -m state --state NEW -m tc

PHP系列 | Swoole 编译安装

1.官方地址:https://wiki.swoole.com/wiki/page/6.html 2.下载地址: https://github.com/swoole/swoole-src/releases http://pecl.php.net/package/swoole http://git.oschina.net/swoole/swoole 3.下载 wget https://github.com/swoole/swoole-src/archive/v4.4.14.tar.gz 4.解压 s

CentOS 6.6编译安装LAMP(Apache2+PHP+Mysql+PHPmyAdmin)

搭建好开发环境: Linux: CentOS 6.6(Final) x64 Apache:2.2.15 MySQL:5.1.52 PHP:5.3.2 步骤说明: 1.MySQL # yum install mysql mysql-server # chkconfig --levels 235 mysqld on # MySQL 可以随系统自己主动启动 # /etc/init.d/mysqld start # mysql_secure_installation # 设置 MySQL 数据 root

Linux下单独编译安装php且支持mysql扩展

mysqlnd是php5.3以后版本加入的,5.3以下版本必须还是要编译mysql. 编译参数,只需要加上--with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd ,即可. 已测试通过. 连接:http://baike.baidu.com/link?url=E0lpDyt-K7RxXAU5lL4f9XXe4iPgg1kCvWNhqiIkLTvccVxHC883eB7Rq-x9eWyrMsO6hGWzw0EjOCaF-Y

搭建LAMP架构— 2、手工编译安装MySQL

在上一篇文档中,我们介绍了手工编译安装APache,本次,让我们继续完成MySQL的手工编译安装. MySQL数据库是C/S架构的,既有客户端又有服务器端,MySQL客户端的安装非常简单,上一篇文档中已经向大家分享了LAMP架构的所有软件包,我们只需要挂载到Linux系统目录底下,使用tar命令解压即可. tar zxvf /opt/lamp/mysql-5.5.24.tar.gz -C /opt/ //把lamp目录中的软件包解压到opt目录下 现在我们先来完成环境包的安装: yum inst

基于CentOS 6.8平台最新源代码包编译安装LNMP环境搭建(Nginx+MySQL+PHP)

部署环境 系统:CentOS 6.8 x86_64 Nginx:1.11.3 MySQL:5.7.14 PHP:7.0.10 pcre:8.39 zlib:1.2.8 openssl:1.0.1t freetype:2.6.5 libmcrypt:2.5.8 boost:1.59.0 cmake:3.6.1 部署准备 使用客户机浏览器访问freetype官网 https://www.freetype.org/ 下载页面选取一个下载地址 下载目前最新发行版本,右击-复制下载链接. 在CentOS服