PHPerzh 为您找到相关结果 28

PHP 数据库连接池实现

摘要 xml 读取配置文件 简易方式 常规方式 PHP解析XML 配置文件 解析 数据库连接池 测试 申请过多时拒绝请求 已满后拒绝放入 总结 此文着实无聊,不要浪费时间往下看啦 摘要 之前总是以脚本面向过程的方式写PHP代码,所以很大程度上来说,既不规范,也不安全,更不容易维护。为了代码的重用,准备写一套自己的工具库,这样的话,以后写项目的时候就可以很轻松的进行使用啦。 今天要进行实现的是一个数据库连接池,以配置文件的方式来实现。 xml XML作为一门高可用的结构化语言,作为配置文件真的是言简意赅,虽然相比于近来配置文件界的YAML, JSON等翘楚来说,可能有效数据的占比比较小,但是这种冗余是有其存在的价值的。 基本上,看完xml的节点就可以知道其功能。这也是为什么大项目都会使用XML...阅读全文

博文 2017-12-06 10:01:01 Marksinoberg

一次php和java的性能比拼

因工作上的需要,我要对比,在同一台物理机上,php和java的性能差异。两个测试程序的功能完全一样,都是非常简单,只涉及到http请求的处理,redis的一次读写和数据库的一次读写。物理机有16核cpu,48G内存,硬盘空间足够。测试结果数据如下: 被测方案 虚拟用户数 GET平均响应时间(秒) UPDATE平均响应时间(秒) 每秒点击数 php 500 0.056 0.072 7759 1000 0.195 0.166 7471 1500 0.318 0.270 7471 单个jvm 500 0.122 0.052 5330 集群jvm 500 0.058 0.058 8500 1000 0.124 0.127 8062 1500 0.193 0.193 7763 2000 0.265 0...阅读全文

博文 2017-06-14 17:03:05 bitbone

php连接kafka

安装扩展 wget https://github.com/edenhill/librdkafka/archive/master.zip unzip master.zip cd librdkafka-master/ ./configure make sudo make install git clone https://github.com/arnaud-lb/php-rdkafka.git cd php-rdkafka phpize ./configure --with-php-config=/usr/local/php/bin/php-config make all -j 5 sudo make install vi /usr/local/php/etc/php.ini extension...阅读全文

博文 2017-06-30 12:02:08 jiangwu

使用Python PHP Redis 可维护的定时任务

使用生产者和消费者模式 subprocess.Popen() 打开PHP脚本获取相应的任务数据,在PHP中计算任务是否到达触发点 把到达的任务往Python传递,没有到达的任务更新Redis中的数据。 Python 在获取PHP回传的任务数据时,把相应的数据加入任务队列 (Schedule Queue)中 schedule_queue.put(task_elem) # 目标URL worker = Consumer(schedule_queue) Consumer是消费者开启的线程。schedule_queue 保存了相应的URL地址。供消费者使用,启用了网络连接,调用网络API接口,消费掉资源。 整个流程完...阅读全文

博文 2017-09-08 19:02:06 sevenkanon

史上最LOW的PHP连接池解决方案

大多数 PHP 程序员从来没有使用过连接池,主要原因是按照 PHP 本身的运行机制并不容易实现连接池,于是乎 PHP 程序员一方面不得不承受其它程序员的冷嘲热讽,另一方面还得面对频繁短链接导致的性能低下和 TIME_WAIT 等问题。 说到这,我猜一定会有 PHP 程序员跳出来说可以使用长连接啊,效果是一样一样的。比如以 PHP 中最流行的 Redis 模块 PhpRedis 为例,便有 pconnect 方法可用,通过它可以复用之前创建的连接,效果和使用连接池差不多。可惜实际情况是 PHP 中各个模块的长连接方法并不好用,基本上是鸡肋一样的存在,原因如下: 首先,按照 PHP 的运行机制,长连接在建立之后只能寄居在工作进程之上,也就是说有多少个工作进程,就有多少个长连接,打个比方,我们有 ...阅读全文

博文 2017-12-01 19:02:06 果树啊

php-cp介绍

php-cp(php-connect-pool)是用php扩展写的一个数据库连接池。 ​我们知道php开发速度快,适合创业快速迭代,但当流量大了之后,php大量的短连接给db层造成多余的消耗,而php处理请求过程中连接会一直持有再加上进程之间不能共享tcp连接会导致撑高mysql的连接,mysql的性能会随着连接数的升高而急速下降,所以很多大公司都强转java,这很大一部分原因是php没有连接池!当然你可以用开源的数据库中间件来缓解这个问题,但是本项目和现有的开源产品有以下几点不同。​ 一.它不同于市面上其他的开源数据库中间件产品: 1.它不需要单独部署中间件集群,是跑在应用服务器上的代理进程,减少了一层外部依赖,这样使得架构更加简单、清爽、可靠。 2.​性能更高,减少了一次网络传输,它通过...阅读全文

博文 2017-06-26 14:02:17 mickelfeng

PHP + sqlserver

连接数据库,查询数据 $conn = new PDO("sqlsrv:server=192.168.0.19;database=ReportServer","sa","123456"); // $sql = "select count(*) count from dbo.Keys"; // $res = $conn->query($sql); // while ($row = $res->fetch()){ // print_r($row); // } $sql = $conn->query("select * from dbo.Keys"); while($row = $sql->fetch()) { print_r($row); ...阅读全文

博文 2018-04-02 10:02:06 Benergy

php 设计数据库连接池

摘要 之前总是以脚本面向过程的方式写PHP代码,所以很大程度上来说,既不规范,也不安全,更不容易维护。为了代码的重用,准备写一套自己的工具库,这样的话,以后写项目的时候就可以很轻松的进行使用啦。 今天要进行实现的是一个数据库连接池,以配置文件的方式来实现。 xml XML作为一门高可用的结构化语言,作为配置文件真的是言简意赅,虽然相比于近来配置文件界的YAML, JSON等翘楚来说,可能有效数据的占比比较小,但是这种冗余是有其存在的价值的。 基本上,看完xml的节点就可以知道其功能。这也是为什么大项目都会使用XML作为配置文件的原因。 可以容忍冗余,但是不能带来一点歧义,或者维护困难方面的问题。 在php中,使用XML文件会是一件赏心悦目的事情,虽然相对于Java程序而言,如此。但是相比于P...阅读全文

博文 2017-07-24 00:00:00 handongyu

swoft-基于swoole协程2.x的高性能PHP微服务框架

https://github.com/swoft-cloud/swoft swoft是基于swoole协程2.x的高性能PHP微服务框架,内置http服务器。框架全协程实现,性能优于传统的php-fpm模式。 基于swoole易扩展 内置http协程服务器 MVC分层设计 高性能路由 全局容器注入 高性能RPC 服务治理熔断、降级、负载、注册与发现 RPC服务 连接池Mysql、Redis、RPC inotify自动reload 强大的日志系统 Future 事件机制 连接池等待队列 别名机制 国际化i18n restful风格 数据库ORM(自动验证、模型、db) crontab定时任务 服务监控 日志统计分析 统一配置中心 更新记录 ...... 2017-08-15 重构console...阅读全文

博文 2017-10-12 12:02:06 mickelfeng

PHP与mysql连接的问题

操作系统:Mac OX方式一:使用PDO的方式将php与数据库进行连接$servername="localhost:3306";$username="train";$password="";try{$conn=newPDO("mysql:host=$servername;dbname=daily_train_db",$username,$password);echo"连接成功";}catch(PDOException$e){echo $e->getMessage();}?>注意:端口号(port)需要接在localhost的冒号(:)后面,否则会出现,下面的错误SQLSTATE[HY000][1045]Accessdeniedforuser'root'@'localhost'(usingpa...阅读全文

博文 2017-06-16 17:04:27 为你真心

python模块: redis

一、redis redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。 Redis 是一个高性能的key-value数据库。 redis的出现,很大程度...阅读全文

博文 2017-06-16 15:04:48 随风化作雨

PHP非阻塞实现方法

为让 PHP 在后端处理长时间任务时不阻塞,快速响应页面请求,可以有如下措施: 1 使用 fastcgi_finish_request() 如果 PHP 与 Web 服务器使用了 PHP-FPM(FastCGI 进程管理器),那通过 fastcgi_finish_request() 函数能马上结束会话,而 PHP 线程可以继续在后台运行。 echo "program start..."; file_put_contents('log.txt','start-time:'.date('Y-m-d H:i:s'), FILE_APPEND); fastcgi_finish_request(); sleep(1); echo 'debug...'; file_put_contents('log.t...阅读全文

博文 2018-08-29 13:00:01 gongchixin

PHP应该使用缓存和连接池

本文转载自 原文,原文链接已失效,摘抄自 摘抄,摘抄发布于 2013-02-24 17:32。 开篇注释:以下文字并没有非常多的技术词汇,所以只要对PHP感兴趣的人都可以看看。 从PHP诞生之日起,PHP就开始在Web应用方面为广大的程序员服务。同时,作为针对Web开发量身定制的脚本语言,PHP一直秉承简单、开源的思想,这也使得PHP得以快速的发展,并且大力地推动Web2.0的出现与发展。但是,长期以来,PHPer(PHP Programmers)被认为是处于草根阶层的程序员,被认为是技术含量少,层次低的程序员。这点在国内尤其突出。 记得一个技术主管说过这样一个事情。他给一个程序员分配了PHP的开发任务,没想到那个程序员居然说:“我是学Java出身的,你让我去写PHP,你这不是在贬低我吗?”...阅读全文

博文 2017-08-06 19:04:16 LeoStupidWise

Delayer 基于 Redis 的延迟消息队列中间件

Delayer 基于 Redis 的延迟消息队列中间件,采用 Golang 开发。 参考 有赞延迟队列设计 中的部分设计,优化后实现。 项目链接:https://github.com/mixstart/d... ,有需要的朋友加 Star 哦。 应用场景 订单超过30分钟未支付,自动关闭订单。 订单完成后, 如果用户一直未评价, 5天后自动好评。 会员到期前3天,短信通知续费。 其他针对某个任务,延迟执行功能的需求。 实现原理 客户端:push 任务时,任务数据存入 hash 中,jobID 存入 zset 中,pop 时从指定的 list 中取准备好的数据。 服务器端:定时使用连接池并行将 zset 中到期的 jobID 放入对应的 list 中,供客户端 pop 取出。 核心特征 使用 ...阅读全文

博文 2018-10-23 20:04:36 細変

php优秀网摘

1、thinkphp的目录结构设计经验总结 说明:thinkphp3.2.3对类没有深刻的认识,对项目规模和架构有很糟糕的影响。这里写的目录结构和设计模式相当于对3.2添加了面向对象架构。第二个链接是把view独立出来的方法。 链接:http://baijunyao.com/article/60 https://baijunyao.com/article/90 2、php分页类 说明:thinkphp有自带的分页类,但是不太好用,需要修改一下bug。另外除了php,也可以自己用jquery(或其他js)编写自己的js分页类。注意bug。php分页和js分页分别用于全局刷新和局部刷新。php分页每次切换分页都是在刷新一个新的url,所以,js分页更好一些。 链接:https://baijuny...阅读全文

SMProxy,让你的项目数据库操作快三倍!

SMProxy GITHUB:https://github.com/louislivi/... swoole msyql proxy 一个基于mysql协议,swoole 开发的mysql数据库连接池 数据库连接池 数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个; 释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。 这项技术能明显提高对数据库操作的性能。 特性 支持读写分离 支持数据库连接池,能够有效解决PHP带来的数据库连接瓶颈 支持SQL92标准 遵守Mysql原生协议,跨语言,跨平台的通用中间件代理。 支持多个数据库连接,多个数据库,多个用户,灵活搭配。 支持mysql事物 采用协程...阅读全文

博文 2018-11-15 17:04:23 子山

基于Swoole的通用连接池 - 数据库连接池

连接池 open-smf/connection-pool 是一个基于Swoole的通用连接池,常被用作数据库连接池。 依赖 依赖 版本 PHP >=7.0.0 Swoole >=4.2.9 Recommend 4.2.13+ 安装 通过Composer安装。 composer require "open-smf/connection-pool:~1.0" 使用 更多示例。 基本用法 use Smf\ConnectionPool\ConnectionPool; use Smf\ConnectionPool\Connectors\CoroutineMySQLConnector; use Swoole\Coroutine\MySQL; go(function () { // MySQL连接数区间:...阅读全文

博文 2019-03-16 18:04:14 hhxsv5

面试官问你如何解决web高并发这样回答就好了

所谓高并发,就是同一时间有很多流量(通常指用户)访问程序的接口、页面及其他资源,解决高并发就是当流量峰值到来时保证程序的稳定性。 我们一般用QPS(每秒查询数,又叫每秒请求数)来衡量程序的综合性能,数值越高越好,一般需要压测(ab工具)得到数据。 假设我们的一个进程(也可以是线程或者协程)处理一次请求花费了50毫秒(业内达标范围一般是20毫秒至60毫秒),那么1秒钟就可以处理20个请求,一台服务器是可以开很多这样的进程并行去处理请求的,比如开了128个,那么这台机器理论上的QPS=2560。 千万不要小瞧这个数字,当你的QPS真有这么高的时候意味着你的DAU(用户日活)有2560*200=51.2万,业内一般是放大200倍计算,有这样的日活说明做得很不错了。 一台服务器能够达到的最大QPS受...阅读全文

博文 2018-11-05 12:04:38 xxfaxy

Swoft 2.0.2 发布,PHP 微服务协程框架

新增(Enhancement): 新增 $request->parsedQuery() 方法 (ab45089) 新增 Bean 属性注入基础数据类型(string/int/bool/float/array),自动根据注释类型转换。(e3d4085) 新增 db(), 使 Model/Query/DB 支持切库(f3b12c9) 新增 DbSelectorInterface 用于根据业务自动切库(b36ca03) 新增 Http server 增加Cookies响应支持 (1a024bf) 新增 devtool 组件的实体生成(14b4d39c) 新增 允许注册 swoole 的 pipeMessage, packet 事件(afec0e3f) 新增 添加更多启动时的相关事件(8aaa38c...阅读全文

博文 2019-06-24 11:05:12 stelin

一个极简的基于swoole常驻内存框架

背景 在用过laravel框架,发现它的路由和数据库ORM确实非常好用,但是整体确实有点慢,执行到控制器大于需要耗时60ms左右。于是打算做一个拥有非常好用的路由和orm又非常简单的框架。所以你会发现one框的路由和ORM有laravel的影子。但也有一些自己的特色,例如ORM支持自动化缓存(自动化读、写、刷新)保持与数据库同步,对外使用无感知。one框架也支持在fpm下运行,在fpm下框架自身整体耗时在1ms左右。 hello world 安装 composer create-project lizhichao/one-app app cd app php App/swoole.php 测试 curl http://127.0.0.1:8081/ 主要功能 RESTful路由 中间件 we...阅读全文

博文 2018-12-17 15:04:39 探索者

Swoole MySQL 连接池的实现

概述 这是关于 Swoole 入门学习的第八篇文章:Swoole MySQL 连接池的实现。 第七篇:Swoole RPC 的实现 第六篇:Swoole 整合成一个小框架 第五篇:Swoole 多协议 多端口 的应用 第四篇:Swoole HTTP 的应用 第三篇:Swoole WebSocket 的应用 第二篇:Swoole Task 的应用 第一篇:Swoole Timer 的应用 收到读者的咨询,这情况大家可能也会有,所以就在这说说: “亮哥,我今年30岁了,有点中年危机,最近有点焦虑,发现工作虽然很忙,但是没感觉能力有所提升,整天都有写不完的业务代码,时间紧有时代码质量也不怎么样,知道还有很多改进空间,但一直没时间改,主要是后面项目压着,马上又要进入开发了,这种情况怎么办?” 首先,...阅读全文

博文 2019-05-27 13:04:03 新亮

Mix PHP V2 新特性:协程、定时器

协程 Mix PHP V2 基于 Swoole 4 的 PHP Stream Hook 协程技术开发,协程使用方式与 Golang 几乎一致,包括框架封装的协程池、连接池、命令行处理都大量参考了 Golang 的系统库风格。 除了缺少 select case 外,Mix PHP 与 Golang 的协程几乎一致,框架还提供了连接池、协程池、命令行处理这些开箱即用的封装。 xgo + Channel xgo 类似 Golang 的 go 关键字,可启动一个新的协程,Channel 等于 Golang 的 chan 类,负责在不同协程中传递数据。 阅读全文

博文 2019-04-10 13:04:12 細変

第三天-《企业应用架构模式》-映射到关系数据库

关系数据库之所以取得成功,最重要的原因之一就是SQL的存在,它是数据库通信标准语言。 1. 架构模式: 驱动领域逻辑访问数据的方式: SQL语句嵌入在程序设计语言中; 行数据入口、表数据入口: 把SQL访问从领域逻辑中分离出来,并把它放到独立的类中(让它们以数据库中的表结构为基础,每一个数据表对应一个类),这些类为数据库建立了一个入口; 活动记录: 领域模型简单时,每个领域对象负责对应数据库的表的存取过程 数据映射器: 领域模型复杂时,处理数据库和领域模型之间的所有存取操作,并且允许双方都能独立变化 面向对象数据库: 领域模型不管有多复杂,均可使用(因为风险,使用不多)。主要好处在于能够提高生产率! 2. 行为问题: 1)所谓行文问题,就是如何让个中对象从数据库中读取出来以及存到数据库中 2...阅读全文

博文 2019-01-25 23:04:18 wuxiumu

MySQL - 扩展性负载均衡:眼花缭乱迷人眼

负载均衡的基本思路很简单: 在一个服务器集群中尽可能地的平均负载量。 基于这个思路,我们通常的做法是在服务器前端设置一个负载均衡器。负载均衡器的作用是将请求的连接路由到最空闲的可用服务器上。如图 1,显示了一个大型网站负载均衡设置。其中一个负责 HTTP 流量,另一个用于 MySQL 访问。 负载均衡有五个常见目的: 可扩展性。负载均衡对某些扩展很有帮助,比如读写分离时从备库读数据。 高效性。负载均衡因为能够控制请求被路由到何处,因此有助于更有效的使用资源。 可用性。灵活的负载均衡方案能够大幅提高服务的可用性。 透明性。客户端无需知道是否存在负载均衡器,也不需要关系在负载均衡器的背后有多少机器。呈现给客户端看到的就是一个透明的服务器。 一致性。如果应用是有状态的(数据库事务、网站会话等),那...阅读全文

博文 2019-04-24 10:04:12 北国风光

php连接redis

/** * */ class _redis_{ private $redis; private static $connections = array(); //定义一个对象池 private static $servers = array(); //定义redis配置文件 public static function addServer($conf){//定义添加redis配置方法 foreach ($conf as $name => $data){ self::$servers[$name]=$data; } } public static function getRedis($name,$select = 0){ //两个参数要连接的服务器KEY,要选择的库 if(!array_key...阅读全文

博文 2019-05-17 20:04:04 lingying5

压测 swoole_websocket_server 性能

概述 这是关于 Swoole 入门学习的第十篇文章:压测 swoole_websocket_server 性能。 第九篇:Swoole Redis 连接池的实现 第八篇:Swoole MySQL 的实现 第七篇:Swoole RPC 的实现 第六篇:Swoole 整合成一个小框架 第五篇:Swoole 多协议 多端口 的应用 第四篇:Swoole HTTP 的应用 第三篇:Swoole WebSocket 的应用 第二篇:Swoole Task 的应用 第一篇:Swoole Timer 的应用 收到读者提问 “使用 Swoole 开发的群聊功能,想知道并发情况,也就是想压测下 QPS,一直未找到方法 ...” 对 swoole_http_server 压测,咱们可以使用 Apache 的 a...阅读全文

博文 2019-06-10 13:04:14 新亮

Swoole4.x之协程变量访问安全与协程连接池实现

访问安全问题 为什么说有访问安全问题呢?传统地,在php的的环境中,很少有Phper遇到所谓变量安全访问问题。举个例子,代码大约如下: class db { protected static $instance; protected $dbCon; function __construct() { /* * 我们这里用stdclass来模拟一个数据库连接 */ $this->dbCon = new \stdClass(); } public static function getInstance() { if(!isset(self::$instance)){ self::$instance = new db(); } return self::$instance; } function d...阅读全文

博文 2019-06-24 23:04:10 如果的如果