如何设置yii数据库远程连接设置的长连接

在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
SegmentFault处女问,小弟刚接触yii框架,想请问下yii框架如何配置mysql的长连接。若无法配置请告之在何处修改pdo的长连接,万分感谢!
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
'attributes' =& [PDO::ATTR_PERSISTENT =& true]
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。互联网营销
填写信息,免费试听
UI设计网页设计平面设计插画Web前端开发PHP开发IT教学视频后期剪辑PHP Web开发
酷客学院课程
主讲人:严滑 4105
主讲人:卓代锋 3879
主讲人:林悰2905
主讲人:陆彬4148
主讲人:酷客学院讲师4065
主讲人:陆彬2943
主讲人:徐超3751
主讲人:陈俊忠2658
主讲人:许杰4658
主讲人:徐超3589
主讲人:小U3125
酷客就业指导
大学生就业:
学员就业推荐
求职攻略推荐
求职攻略动态
求职攻略热门
求职攻略汇总
面试技巧推荐
面试技巧动态
面试技巧动态
面试技巧动态
酷客就业企业
互联网资讯
酷客学员故事
【已解答】
A :一、中建二局上海分公司简介中建二局有限公司上海分公司组建于1999年,代表中建二局行使在上海及华东地区的生产经营权。2017年中国建筑位列
【已解答】
A :  平面设计师 年薪150K  就业城市:云南昆明  培训时间:&  就业公司:昆明万德科技有限公司  酷客学院是我
【已解答】
【已解答】
【已解答】
【已解答】
【已解答】
【已解答】
程序开发:
运营推广:
UI设计/平面设计
Web前端(H5)
酷客学院师资
资深WEB设计师
大数据分析师
PHP全栈开发资深讲师
影视剪辑资深讲师
UI设计总监
资深平面设计师
关注酷客学院公众号如何设置yii数据库的长连接-酷客学院
IT在线教育
如何设置yii数据库的长连接
10:00:44 来源:
这篇文章主要介绍了关于如何设置yii数据库的长连接,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下1.在配置文件设置属性webb/config/main.php中添加persistent或者attributes属性
'components'=&array(
// 数据库配置 TO Mysql
'dsnMyBD'=&array(
'class'=&'CDbConnection',
'connectionString'
=& 'mysql:host=127.0.0.1;port=3306;dbname=my_db',
'tablePrefix'
=& 'pre_',
'emulatePrepare'
'username'
=& 'root',
'password'
=& ';,
'charset'
=& 'utf8',
'persistent'
// 'attributes'
=& array(PDO::ATTR_PERSISTENT =& true),
);2.检测是否成功启用长连接
可以调用frameworkdbCDbConnection.php下的getPersistent()函数,返回true为启用成功,false为启用失败。例如:/web/protected/controllers/TestController.php
public function actionList()
$oQues = MyBD::model();
var_dump($oQues-&getPersistent());
}备注:如果使用了长连接而长期没有对数据库进行任何操作,那么在timeout值后,mysql
server就会关闭此连接,而客户端在执行查询的时候就会得到一个类似于“MySQL server has gone away“这样的错误。首先作为超级用户登录到MYSQL,注意必须是超级用户,否则后面会提示没有修改权限。然后输入show global variables like 'wait_timeout';以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!在yii框架中扫描目录下文件入数据库的方法关于yii改善并发数的性能优化的方法以上就是如何设置yii数据库的长连接的详细内容,更多请关注酷客学院其它相关文章!
免责声明:本文来源于网络,由网友提供或网络搜集,仅供个人交流学习参考使用,不涉及商业盈利目的。如有版权问题,请联系本站管理员予以更改或删除。谢谢合作!
热门标签:
大家都在看
互联网资讯
Java培训班
关注酷客学院公众号& 基于swoole扩展实现真正的PHP数据库连接池
基于swoole扩展实现真正的PHP数据库连接池
PHP的数据库连接池一直以来都是一个难题,很多从PHP语言转向Java的项目,大多数原因都是因为Java有更好的连接池实现。PHP的MySQL扩展提供了长连接的API,但在PHP机器数量较多,规模较大的情况下,mysql_pconnect非但不能节约MySQL资源,反而会加剧数据库的负荷。
假设有100台PHP的应用服务器,每个机器需要启动100个apache或fpm工作进程,那每个进程都会产生一个长连接到MySQL。这一共会产生1万个My SQL连接。大家都知道MySQL是每个连接会占用1个线程。那MYSQL就需要创建1万个线程,这样大量的系统资源被浪费在线程间上下文切换上。而你的业务代码中并不是所有地方都在做数据库操作,所以这个就是浪费的。
连接池就不同了,100个worker进程,公用10个数据库连接即可,当操作完数据库后,立即释放资源给其他worker进程。这样就算有100台PHP的服务器,那也只会创建1000个MySQL的连接,完全可以接受的。
以前确实没有好的办法来解决此问题的,现在有了swoole扩展,利用swoole提供的task功能可以很方便做出一个连接池来。
代码如下:
$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("show tables");
if ($result !== false) {
list($status, $db_res) = explode(':', $result, 2);
if ($status == 'OK') {
//数据库操作成功了,执行业务逻辑代码,这里就自动释放掉MySQL连接的占用
$serv->send($fd, var_export(unserialize($db_res), true) . "\n");
$serv->send($fd, $db_res);
$serv->send($fd, "Error. Task timeout\n");
function my_onTask($serv, $task_id, $from_id, $sql)
static $link =
if ($link == null) {
$link = mysqli_connect("127.0.0.1", "root", "root", "test");
if (!$link) {
$serv->finish("ER:" . mysqli_error($link));
$result = $link->query($sql);
if (!$result) {
$serv->finish("ER:" . mysqli_error($link));
$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();
这里task_worker_num就是要启用的数据库连接池数量,worker进程为100时,连接池数量为10就可以设置为worker_num = 100, task_worker_num = 10。什么是Workerman
Workerman是一款纯PHP开发的开源高性能的PHP socket 服务器框架。被广泛的用于手机app、移动通讯,微信小程序,手游服务端、网络游戏、PHP聊天室、硬件通讯、智能家居、车联网、物联网等领域的开发。
支持TCP长连接,支持Websocket、HTTP等协议,支持自定义协议。拥有异步Mysql、异步Redis、异步Http、异步消息队列等众多高性能组件。
技术交流群:
Workerman支持的特性
纯PHP开发,多进程支持,支持php7,支持hhvm
支持TCP/UDP,单机可支持数百万以上TCP长连接
支持分布式部署,集群能支持数百万甚至更高的并发TCP连接
支持libevent事件触发网络库
支持热更新及服务器平滑重启
拥有异步Mysql、Redis、Dns等众多高性能组件
基于高性能的Epoll事件网络库,单机可支持百万的并发连接,长连接吞吐量高达36W/S。PHP数据库等对象可以常驻内存,减少解析编译及网络开销。
已被多家公司证实其高可用性,这些公司不乏日营业额过亿的电子商务公司用于服务器后台的开发,以及知名网游公司用于游戏后台的开发。
接口简单,并已经有很多成熟的网络应用,只要你会PHP,你就可以在这些应用的基础上快速的开发出自己的Socket应用服务。
workerman相关应用
Workerman开发的客服系统,任何站点引入一段js即可接入,接入成本极低。支持web站点和移动站点,支持表情、传图、传文件、粘贴截图、离线消息、客服管理、留言、历史记录、会话统计,支持多站点、支持万人在线。
一套功能强大的WebIM源码,支持群聊、私聊、视频、语音、表情、传图、传文件、离线消息、历史消息记录等功能。几行js便可接入网页聊天,支持万人在线。
一套基于开发的智能的人机交互系统,基于机器学习开发的实时、简单、高效率(7*24小时服务)、安全低成本的智能客服机器人系统。该系统适用于互联网、金融、旅游、教育、政府、等各行各业。在降低企业成本,提高顾客满意度方面有起重要作用。
一个可扩展的php socket的聊天室,服务端采用GatewayWorker作为socket服务器框架,支持万人在线,采用web-socket-js作为前端websocket库,支持多浏览器。同样可以用作app聊天室开发。
web消息推送系统,能够通过socket 长连接实时推送消息给所有用户,基于PHPSocketIO开发,客户端使用socket.io客户端,支持各种浏览器。
使用HTML5+WebSocket+GatewayWorker实时推送技术开发的小蝌蚪聊天室,聊天室中玩家们化身为小蝌蚪,可以自由游动,并且可以实时聊天,非常有趣。
BrowserQuest是Mozilla发布的一款2D图形的MMO(大型多人在线)游戏,玩家可以聊天、打怪、升级、寻宝、获得成就。这里基于WorkerMan框架重写了BrowserQuest服务端nodejs部分,浏览器与后端同样是基于websocket协议通讯。
PHPSocket.IO是Socket.IO的PHP 服务端版本。PHP版socket.io可用来替代传统nodejs版本socket.io服务端,并且接口与其一致,可用于开发跨浏览器或者安卓、ios等移动端即时通讯应用。
一个php写的socks5代理,基于workerman开发。socks5代理不关心应用层协议,是一种通用的代理服务器,可用于做游戏代理、http代理等等。
基于workerman开发的一个http代理。源码仅有几十行,性能强悍。
phptty是一个基于浏览器的Linux终端模拟器,可以在浏览器里面控制Linux终端程序。服务端基于workerman开发。phptty可以实现很多有意思的功能,例如利用htop命令查看服务器负载,tail -f 实时服务器错误日志等等。
一个通过浏览器查看vmstat命令的工具,以更友好的方式实时展示服务器cpu、内存、IO等情况
利用浏览器HTML5捕获摄像头视频并转换成ascii码流,并利用workerman实时转发给其它浏览器展示
网页HTML5调用摄像头,利用websocket将摄像头视频流实时传输给workerman,并实时转发给其它浏览器展示
易联云平台是依托移动互联网的超远程打印解决方案,包含了设备管理中心、互联网API等模块。能够有效的实现易联云和应用之间的对接,帮助用户和开发者方便的使用超远程打印的构架和功能。
多人在线版flappy bird,游戏中你可以看到无数玩家同时控制小鸟前赴后继地向前送死的壮烈(搞笑)场面。
Workerman和Thrift框架相结合,目的是解决异构系统与PHP通信的问题,使你的服务更方便的被其它语言调用。
使用json数据格式通讯的远程调用系统,通讯格式简单明了,方便其它语言调用,并集成了监控模块。
基于php socket开发的一款分布式统计监控系统,udp数据上报,分布式统计,结果自动汇总展示。纯PHP开发、无需安装Mysql、Nginx、Apache等软件。
GatewayWorker是基于Workerman开发的一个可分布式部署的TCP长连接框架,专门用于快速开发TCP长连接应用,例如app推送服务端、即时IM服务端、游戏服务端、物联网、智能家居等等
一个简单的消息队列demo,基于Linux sysv 队列实现,需要开启sysvmsg扩展
基于订阅的进程间通讯组件,事件的订阅发布机制,使用方法简单,能够方便的实现进程间及服务器集群间通讯。
进程间数据共享组件,用于分布式数据共享。服务端基于Workerman。客户端可用于任何PHP项目。
技术交流群
支付宝捐赠
1?俊丽支付宝
1?匿名微信
1?噢,乔治,..支付宝
6.66?慕飞支付宝
1?匿名微信
1?匿名微信
66?匿名微信
10?亚磊支付宝
Powered by
QQ群1: (2000人已满)
QQ群2: (2000人已满)
QQ群3: (2000人已满)
QQ群4: (2000人已满)
QQ群5: (2000人已满)
QQ群6: (2000人已满)
QQ群7: (2000人已满)
QQ群8: (2000人)
游戏开发群:00人)
提示:一个人只能加一个群哦

我要回帖

更多关于 yii数据库导出 的文章

 

随机推荐