DBH

php程序内存优化之数组操作优化

被刻印的时光 ゝ 提交于 2020-08-19 16:52:10
设计一个数据表如下: create table optimization( id INT NOT NULL AUTO_INCREMENT, value VARCHAR(10) NOT NULL, PRIMARY KEY(id) ); 现在有一个业务需求需要批量插入数据。 先来看看下面这一段代码: <?php $dsn = 'mysql:dbname=test;host=127.0.0.1'; $user = 'root'; $password = 'root'; try { $dbh = new PDO($dsn, $user, $password); } catch(PDOException $e) { echo 'Connection failed: ' , $e->getMessage(); } $begin = microtime(true) * 1000; $count = 100; $stmt = $dbh->prepare('INSERT INTO `optimization` (id, value) VALUES(:id, :value)'); $stmt->bindParam(':id', $id); $stmt->bindParam(':value', $value); for ($i = 0; $i < $count; $i++) { $id = '';

封装php的RabbitMq

℡╲_俬逩灬. 提交于 2020-08-14 13:00:54
简单封装了一个rabbitmq类(业务代码随便写的) 首先是账号密码配置 config.php <?php return $arr = [ 'RabbitMq' => [ // Rabbitmq 服务地址 'host' => '127.0.0.1', // Rabbitmq 服务端口 'port' => '5672', // Rabbitmq 帐号 'login' => 'guest', // Rabbitmq 密码 'password' => 'guest', 'vhost'=>'/' ] ]; 基类 base.php <?php include dirname(__FILE__).'/object.php'; include dirname(__FILE__).'/config.php'; class RabbitMq implements object { //保存类实例的静态成员变量 static private $_instance; static private $_conn; static private $amp ; static private $route = 'key_1'; static private $q ; static private $ex ; static private $queue; public static function

mha 搭建 及注意事项

妖精的绣舞 提交于 2020-08-09 11:05:54
简介: MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。 该软件由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点) 。MHA Manager可以单独部署在一台独立的机器上管理多个master-slave集群,也可以部署在一台slave节点上。MHA Node运行在每台MySQL服务器上,MHA Manager会定时探测集群中的master节点,当master出现故障时,它可以自动将最新数据的slave提升为新的master,然后将所有其他的slave重新指向新的master。整个故障转移过程对应用程序完全透明。 在MHA自动故障切换过程中,MHA试图从宕机的主服务器上保存二进制日志,最大程度的保证数据的不丢失,但这并不总是可行的。例如,如果主服务器硬件故障或无法通过ssh访问,MHA没法保存二进制日志,只进行故障转移而丢失了最新的数据。使用MySQL 5.5的半同步复制

mysql 主主互备实现

*爱你&永不变心* 提交于 2020-08-07 15:05:48
今天星期天,么事就写个MYSQL的主主架构的博客,原理如下图,不是我画的网上找的。 主机作用 操作系统 mysql版本 对应IP vip数据库 mysqlA(主) centos6.4 mysql 5.5.48 192.168.48.129 192.168.48.126 mysqlB(备) centos6.4 mysql 5.5.48 192.168.48.132 一: 在每个节点安装mysql数据库: 《1》到官网去下载最新的yum仓库,并安装 http://dev.mysql.com/downloads/repo/yum/ yum install mysql-community-server 《2》用第三方yum 1、导入第三方源webtatic rpm -Uvh http://repo.webtatic.com/yum/el6/latest.rpm 2、如果已安装低版本的mysql就删除 yum remove mysql mysql-* 3、安装libmysqlclient15 yum install libmysqlclient15 --enablerepo=webtatic 4、安装mysql5.5 yum install mysql55 mysql55-server --enablerepo=webtatic 《3》安装MariaDB 我这里用的这安装的 1、vi

BlueStore源码分析之事物状态机

放肆的年华 提交于 2020-05-08 22:35:49
前言 BlueStore可以理解为一个支持ACID的本地日志型文件系统。所有的读写都是以 Transaction 进行,又因为支持覆盖写,所以写流程设计的相对复杂一些,涉及到一系列的状态转换。我们着重分析一下状态机、延迟指标以及如何保证IO的顺序性和并发性。 目录 状态机 延迟分析 IO保序 线程队列 IO状态 最后YY 状态机 queue_transactions queue_transactions 是ObjectStore层的统一入口,KVStore、MemStore、FileStore、BlueStore都相应的实现了这个接口。 state_t state 变量记录了当前时刻事物处于哪个状态。在创建TransactionContext的时候会将 state 初始化为 STATE_PREPARE ,然后在 _txc_add_transaction 中会根据操作码类型(opcode)进行不同的处理。同时会获取PG对应的OpSequencer(每个PG有一个OpSequencer)用来保证PG上的IO串行执行,对于deferred-write会将其数据写入RocksDB(WAL)。 以下阶段就进入BlueStore状态机了,我们以写流程为导向分析状态机的每个状态。 STATE_PREPARE 从state_prepare开始已经进入事物的状态机了。这个阶段会调用 _txc_add

PDO准备好的语句是否足以防止SQL注入?

房东的猫 提交于 2020-05-08 06:03:51
问题: Let's say I have code like this: 假设我有这样的代码: $dbh = new PDO("blahblah"); $stmt = $dbh->prepare('SELECT * FROM users where username = :username'); $stmt->execute( array(':username' => $_REQUEST['username']) ); The PDO documentation says: PDO文档说: The parameters to prepared statements don't need to be quoted; 准备好的语句的参数不需要用引号引起来。 the driver handles it for you. 司机为您处理。 Is that truly all I need to do to avoid SQL injections? 那真的是我避免SQL注入所需要做的一切吗? Is it really that easy? 真的那么容易吗? You can assume MySQL if it makes a difference. 您可以假设MySQL会有所作为。 Also, I'm really only curious about the use of prepared

隐士之称它的超凡脱俗、

徘徊边缘 提交于 2020-05-03 20:16:51
sdfsdf 服务网格作为一个改善服务到服务通信的专用基础设施层,是云原生范畴中最热门的话题。随着容器愈加流行,服务拓扑也频繁变动,这就需要更好的网络性能。服务网格能够通过服务发现、路由、负载均衡、心跳检测和支持可观测性,帮助我们管理网络流量。服务网格试图为无规则的复杂的容器问题提供规范化的解决方案 将供应链搬出中国,似乎成了过去两三个月新冠肺炎疫情衍生出的热门话题。 年初新冠肺炎疫情爆发,让中国供应链的生产活动几乎完全停顿,影响席卷全球:苹果的新 5G 有可能因疫情而延期推出,特斯拉新款芯片无法及时交付、陷入“芯片门”纠纷。其余像三星、小米、索尼等著名跨国企业,均受到供应链停摆的影响。 因此,wnaclmalaysia.answers.yahoo.com/question/index?qid=20200426190639AASmPTx?JZ3=57dbh=77r sg.answers.yahoo.com/question/index?qid=20200426190639AASmPTx?NT3=33tnd=51f hk.answers.yahoo.com/question/index?qid=20200426190639AASmPTx?PP5=99nfj=77h answers.yahoo.com/question/index?qid=20200426190639AASmPTx

原生php pdo几个处理

旧城冷巷雨未停 提交于 2019-12-05 17:19:06
闲来无事,便记录几个最近遇到的Pdo细节问题,平常都是用orm的。 长连接 在历史的Mysql驱动中,都是使用connect和pconnect来区分长短连接,到了pdo之后,改成了参数。 \PDO::ATTR_PERSISTENT $dbh = new \PDO(MYSQL_DSN, MYSQL_USER, MYSQL_PASS, array( \PDO::ATTR_PERSISTENT => true, \PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8', )); 如果想使用持久连接,必须在传递给 PDO 构造函数的驱动选项数组中设置 PDO::ATTR_PERSISTENT 。如果是在对象初始化之后用 PDO::setAttribute() 设置此属性,则驱动程序将不会使用持久连接。 MySQL server has gone away 某个mysql长连接很久没有新的请求发起,达到了server端的timeout,被server强行关闭。此后再通过这个connection发起查询的时候,就会报错server has gone away,这种情况特别容易出现在脚本里。(max_allowed_packet 是包太大造成的连接中断,这里不予以讨论) 解决方案: 修改my.cnf的 wait_timeout、interactive

原生php pdo几个处理

早过忘川 提交于 2019-11-27 02:37:33
闲来无事,便记录几个最近遇到的Pdo细节问题,平常都是用orm的。 长连接 在历史的Mysql驱动中,都是使用connect和pconnect来区分长短连接,到了pdo之后,改成了参数。 \PDO::ATTR_PERSISTENT $dbh = new \PDO(MYSQL_DSN, MYSQL_USER, MYSQL_PASS, array( \PDO::ATTR_PERSISTENT => true, \PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8', )); 如果想使用持久连接,必须在传递给 PDO 构造函数的驱动选项数组中设置 PDO::ATTR_PERSISTENT 。如果是在对象初始化之后用 PDO::setAttribute() 设置此属性,则驱动程序将不会使用持久连接。 MySQL server has gone away 某个mysql长连接很久没有新的请求发起,达到了server端的timeout,被server强行关闭。此后再通过这个connection发起查询的时候,就会报错server has gone away,这种情况特别容易出现在脚本里。(max_allowed_packet 是包太大造成的连接中断,这里不予以讨论) 解决方案: 修改my.cnf的 wait_timeout、interactive