
正文
php7使用数据库连接池 php数据库
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】
本文实例讲述了PHP利用pdo_odbc实现连接数据库。分享给大家供大家参考,具体如下:
目的:从sql
server数据库里面把某个视图文件调用出来,以键值对的方式显示在页面上。
利用pdo
odbc来实现PHP连接数据库:
在PHP配置文件里面开启pdo_odbc.dll服务。重启Apache服务器。
在ThinkPHP5.1的项目中在模块里添加config添加规定好的样式数据库:
代码如下:
?php
return
[
//
数据库类型
'type'
=
'sqlsrv',
//
服务器地址
'hostname'
=
'localhost',
//
数据库名
'database'
=
'mysql',
//
用户名
'username'
=
'sa',
//
密码
'password'
=
'123456',
//
端口
'hostport'
=
'',
//
连接dsn
'dsn'
=
'odbc:Driver={SQL
Server};Server=localhost;Database=mysql',
//
数据库连接参数
'params'
=
[],
//
数据库编码默认采用utf8
'charset'
=
'utf8',
//
数据库表前缀
'prefix'
=
'',
//
数据库调试模式
'debug'
=
true,
//
数据库部署方式:0
集中式(单一服务器),1
分布式(主从服务器)
'deploy'
=
0,
//
数据库读写是否分离
主从式有效
'rw_separate'
=
false,
//
读写分离后
主服务器数量
'master_num'
=
1,
//
指定从服务器序号
'slave_no'
=
'',
//
是否严格检查字段是否存在
'fields_strict'
=
true,
//
数据集返回类型
'resultset_type'
=
'array',
//
自动写入时间戳字段
'auto_timestamp'
=
false,
//
时间字段取出后的默认时间格式
'datetime_format'
=
'Y-m-d
H:i:s',
//
是否需要进行SQL性能分析
'sql_explain'
=
false,
//
Builder类
'builder'
=
'',
//
Query类
'query'
=
'\\think\\db\\Query',
//
是否需要断线重连
'break_reconnect'
=
false,
//
断线标识字符串
'break_match_str'
=
[],
];
?
在控制器controller里面建一个控制文件Test.php
代码如下:
?php
namespace
app\index\controller;
use
think\Db;
use
think\Controller;
class
Test
extends
Controller
{
public
function
zz(){
$data=Db::view('View_2')-select();
echo
json_encode($data);
}
}
?
最后调用入口文件即可访问。
我的效果:
[{"111":"123","1112":"LLP","232":"1","ROW_NUMBER":"1"},{"111":"123","1112":"BB","232":"2","ROW_NUMBER":"2"}]
更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend
FrameWork框架入门教程》及《PHP模板技术总结》。
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。
您可能感兴趣的文章:ThinkPHP实现多数据库连接的解决方法tp5(thinkPHP5)框架实现多数据库查询的方法ThinkPHP3.1新特性之多数据库操作更加完善tp5(thinkPHP5)框架连接数据库的方法示例PHP7使用ODBC连接SQL
Server2008
R2数据库示例【基于thinkPHP5.1框架】thinkPHP5实现的查询数据库并返回json数据实例tp5(thinkPHP5)操作mongoDB数据库的方法tp5(thinkPHP5)框架数据库Db增删改查常见操作总结thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例
相关问答
Q1: windows下怎么安装php7,php7里面没有这个php7apache2
第一步php7使用数据库连接池:安装Apache服务。
在这里主要配置Network Domain、Server Name、Email地址以及Apache服务的占用端口,默认为80端口,你可以根据需要配置在其他端口,Apache的安装目录你可以使用默认目录或根据需要自行选择安装目录。
在完成apache服务的安装后,在游览器中输入,出现It’s work!字样,说明Apache服务安装成功了。
第二步:MySQL的安装
选择Custom自定义安装
点击“Change”更改你需要的目录
待文件复制安装完毕后,进行MySQL设置界面,单击Finish。
选择Detailed Configuration进行详细配置
选择MySQL运行模式:Server Machine
选择MySQL数据库默认存储方式:Non-Trans Only (MYISAM)
设定MySQL最大连接数:一般设置为128 – 512之间的整数。
设定MySQL网络参数,注意:不要勾选启用Strict Mode!那个Addfirewall的选项仅在需要外连MySQL的时候勾选上,也就是说给防火墙加个出入站的策略。
设定MySQL默认字符集:以用户站点语言为准,默认我们填gbk。
Windows环境设定
修改设定root用户密码,root密码请设置的比较复杂些,如果你出现的是三行,第一行的current password不要填写,留空白
注意:非必要情况下,不要启动远程连接模式! 完成MySQL的安装,并启动MySQL服务。
完成后,打开cmd命令提示符窗口,输入命令:mysql –u root –p
输入刚才安装时设置的密码后,如果能够正常进入MySQL控制台则说明MySQL安装正常。
更改MySQL数据库存放目录(可选,默认是在C:ProgramDataMySQLMySQL Server 5.1data,隐藏目录)
打开cmd命令提示符窗口,输入命令:net stop mysql 停止MySQL服务运行php7使用数据库连接池;
打开你的mysql安装目录的my.ini,
找到:
Datadir = “XXXXdata”
修改为:
Datadir = “你需要的mysql安装目录,如:F:Database”
将C:ProgramDataMySQLMySQL Server 5.1data 文件夹复制到你修改的Datadir目录,注意不是作为子目录,如果你的Datadir写的是F:Database,那么你就把C:ProgramDataMySQLMySQL Server 5.1data复制到F盘,然后改名为Database;
打开cmd命令提示符窗口,
输入命令:net start mysql
启动MySQL服务。
重新测试MySQL是否工作正常。
第三步:安装PHP。
其实在Windows 7下进行PHP安装非常简单,由于我下的是PHP代码包,只要解压php-5.3.2-Win32-VC6-x86并重名为文件夹为php,将其复制到C盘目录下即可完成PHP安装。
PHP环境搭建第三步:进行PHP配置环境。
解压缩下载的php-5.2.8-Win32.zip文件到你指定的目录
然后修改php.ini
进入PHP文件夹,将php.ini-dist 重命名为php.ini ;
打开php.ini文件,找到:
extension_dir= “./”
将其改为:
extension_dir= “你的php解压目录ext”
找到:Windows Extensions
在Windows Extensions下方的动态模块配置中,需要打开以下模块支持:(去掉模块配置每行前面的分号即可)
php_curl.dll
php_pdo_mysql.dll
php_gd2.dll
php_mbstring.dll
php_mcrypt.dll
php_mhash.dll
php_ming.dll
php_mysql.dll
php_openssl.dll
php_sockets.dll
php_xmlrpc.dll
php_zip.dll
找到:
disable_functions=
改为:
disable_functions=passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server
保存php.ini文件,并将其复制到Y:Windows,然后把php文件夹下的libmysql.dll复制到C:WindowsSystem32目录下。
接着配置PHP的Session功能(可选)
在使用session功能时,我们必须配置session文件在服务器上的保存目录,否则无法使用session,我们需要在Windows 7上新建一个可读写的目录文件夹,此目录最好独立于WEB主程序目录之外,此处我在D盘根目录上建立了phpsessiontmp目录,然后在php.ini配置文件中找到
;session.save_path = “/tmp”
修改为
session.save_path = “D:/phpsessiontmp”
配置PHP的文件上传功能 (可选)
同session一样,在使用PHP文件上传功能时,我们必须要指定一个临时文件夹以完成文件上传功能,否则文件上传功能会失败,我们仍然需要在Windows 7上建立一个可读写的目录文件夹,此处我在D盘根目录上建立了phpfileuploadtmp目录,然后在php.ini配置文件中找到
;upload_tmp_dir =
修改为
upload_tmp_dir = “D:/phpfileuploadtmp”
第五步:配置Apache以支持PHP
1、打开你的apache2的安装目录,找到conf文件,打开里面的httpd.conf
在#LoadModule vhost_alias_module modules/mod_vhost_alias.so下添加
复制代码
代码如下:
LoadModule php5_module "你的php安装目录/php5apache2_2.dll"
PHPIniDir "c:/Windows" (因为把php.ini复制到了C:/Windows目录中了)
AddType application/x-httpd-php .php .html .htm
我们在PHP目录下可以看到多个php5apache的DLL文件,由于我们使用的是Apache2.2.15,所以我们当然需要使用php5apache2_2.dll,接着指定PHP的安装目录以及执行的程序扩展名。
2、我们应该知道默认Apache服务器执行WEB主程序的目录为Apache2.2/htdocs,所以当你的WEB主程序目录变更时,我们需要修改相应的Apache配置,即将
复制代码
代码如下:
DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs"
修改为
复制代码
代码如下:
DocumentRoot "D:/PHPWeb(目录自己定,我这是随便写的)"
还有
复制代码
代码如下:
Directory "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs"
修改为
Directory "D:/PHPWeb(目录自己定,我这是随便写的)"
最后修改具体的index文件先后顺序,由于配置了PHP功能,当然需要index.php优先执行
DirectoryIndex index.html
修改为
DirectoryIndex index.php index.html
最后重启Apache服务器
在一切工作完成后,在你刚才指定的工作目录中(D:/PHPWeb)新建php文件,输入以下内容
复制代码
代码如下:
?
phpinfo();
?
保存,在浏览器中输入刚才新建的php文件名.php,如果出现php信息的话,就说明成功了。然后是数据库的链接,把刚才建的php文件的内容替换为
复制代码
代码如下:
?php
$connect=mysql_connect(“127.0.0.1″,”root”,”你的mysql数据库密码”);
if(!$connect) echo “Mysql Connect Error!”;
else echo ”;
mysql_close();
?
Q2: php7.0可以用mysql 5.1.73的吗??
没什么问题php7使用数据库连接池,但是如果是php7操作数据库php7使用数据库连接池的话需要使用mysqli来进行
Q3: 数据库连接池的原理是什么?
数据库连接池的基本原理是在内部对象池中维护一定数量的数据库连接,并对外暴露数据库连接获取和返回方法。如:
外部使用者可通过getConnection 方法获取连接,使用完毕后再通过releaseConnection 方法将连接返回,注意此时连接并没有关闭,而是由连接池管理器回收,并为下一次使用做好准备。
Q4: 数据库连接池的工作机制是什么
数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。
数据库连接池正是针对这个问题提出来的。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个,释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。
扩展资料:
数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数制约。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。
参考资料来源:百度百科-数据库
参考资料来源:百度百科-数据库连接池
Q5: 连接池的基本原理? 以及使用连接池的好处?
package test;
import java.sql.*;
import java.util.*;
public class DBConnpool
{
private int inUse = 0;
private VectorConnection connections = new VectorConnection();
private String poolname = "dbconnpool";
private String dbid = "jdbc:mysql://localhost:3306/teasystem";
private String drivername = "com.mysql.jdbc.Driver";
private String username = "root";
private String password = "123";
private int maxconn = 5000;
public DBConnpool(){}
public void setdbid(String dbid)
{
this.dbid = dbid;
}
public void setusername(String username)
{
this.username = username;
}
public void setpassword(String password)
{
this.password = password;
}
public void setmaxconn(int maxconn)
{
this.maxconn = maxconn;
}
public String getdbid()
{
return dbid;
}
public String getusername()
{
return username;
}
public String getpassword()
{
return password;
}
public int getmaxconn()
{
return maxconn;
}
//将连接返还给连接池
public synchronized void reConnection(Connection conn)
{
Connection con = conn;
connections.addElement(con);
inUse--;
}
//从连接池获取一个连接
public synchronized Connection getConnection()
{
Connection con = null;
if(connections.size()0)
{
con = (Connection)connections.elementAt(0);
connections.removeElementAt(0);
try{
if(con.isClosed())
{
con = getConnection();
}
}catch(Exception e){
e.printStackTrace();
}
}else if(maxconn == 0||inUsemaxconn)
{
con = newConnection();
}
if(con != null)
{
inUse++;
}
return con;
}
private Connection newConnection()
{
Connection con = null;
try{
Class.forName(drivername);
con = DriverManager.getConnection(dbid,username,password);
}catch(Exception e){
e.printStackTrace();
return null;
}
return con;
}
public synchronized void closeConn()
{
Enumeration allConnections = connections.elements();
while(allConnections.hasMoreElements())
{
Connection con = (Connection)allConnections.nextElement();
try{
con.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
}
使用连接池,把暂时不使用的链接放入连接池,到需要使用的时候,从连接池中取出链接使用
php7使用数据库连接池的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于php数据库、php7使用数据库连接池的信息别忘了在本站进行查找喔。







