关闭

读懂 Workerman 框架和 GatewayWorker 框架

首先去 workerman 的官网查看相关的介绍,再次不在赘述。 我们通过一个 workerman 官网的例子来简单讲述一下workerman 的工作过程。 windows版本聊天室 点击下载workerman-chat-for-win 此版本跟 linux 版本的不同在与其中 workerman 的核心框架,其使用的是 windows 的版本,具体 windows 版本和 li...
阅读(3) 评论(0)

curl_multi_select解决curl_multi网页假死问题

curl_multi可以批处理事务,给网页编程带来很大的方便。不过在使用curl_multi的过程中,我们会遇到一个比较头疼的问题,那就是当并发处理的事务数量过多的时候,就会出现CPU过高,网页假死的现象,这是不可以忽视的。 今天,通过查询相关资料和测试,终于找到了一个解决问题的方法。 正常情况下,我们是这样使用curl_multi的。 实例代码: $connoma...
阅读(25) 评论(0)

curl_init()和curl_multi_init()多线程的速度比较

php中curl_init()的作用很大,尤其是在抓取网页内容或文件信息的时候,例如之前文章curl获得header检测GZip压缩的源代码就介绍到curl_init()的强大。 curl_init()处理事物是单线程模式,如果需要对事务处理走多线程模式,那么php里提供了一个函数curl_multi_init()给我们,这就是多线程模式处理事务的函数。 curl_init()与cur...
阅读(23) 评论(0)

php curl_multi批量发送http请求

一、使用curl_multi批量发送http请求 引子:在Android4.0开发中,发送Http请求已经不允许在主进程中执行了,必须在线程中执行。原因在于Http接口响应时间有可能阻塞主进程事件监听(对于.Net开发,其实也是如此)。但是,由于PHP并没有多线程的概念,那么,如何高效率在PHP中执行多次http请求呢?答案是使用curl_multi_init,由此,我做了一个实验。 ...
阅读(15) 评论(0)

使用multi curl进行http并发访问

curl是一款利用URL语法进行文件传输的工具,它支持多种协议,包括FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET等,我们既可以在命令行上使用它,也可以利用 libcurl进行相关编程。相信大部分同学都应该使用过libcurl的easy 接口,easy接口的使用非常的简单,curl_easy_init用来初始化一个easy curl对象,curl_easy_setop...
阅读(13) 评论(0)

阿里云服务器使用免费个人DV证书部署nginx+https站点

一、在阿里云中购买证书服务 在阿里云中购买证书服务,功能可以在阿里云的控制台中的“证书服务”中找到,由于是个人站点,我购买的是DV类型的证书。 OK,这里补充一下证书的几个类型,根据不通的业务类型使用不通的证书: 证书类型 使用范围 DV 个人使用证书,能起到加密传输的作用,但无法向用户证明网站的真实身份。 ...
阅读(17) 评论(0)

PHP curl请求错误汇总和解决方案

最近做了一个服务器监控,需要通过curl发出大量的http请求,这里列举了一下curl返回的常见错误码,方便下次排查问题: 错误信息 含义 解决方案 Illegal characters found in URL URL中包含"\r",“\n"特殊字符 过滤这些特殊字符 if (strpbrk(data->change....
阅读(11) 评论(0)

PHP使用curl multi要注意的问题:每次使用curl multi同时并发多少请求合适

PHP的curl multi可以使用多线程处理http请求,一定程度上可以提高请求接口的效率。但是,启用多线程也是会消耗资源的事情,那么每次curl multi同时并发多少个请求合适呢? 接下来做了以下一个实验,在开始的时候,先说说实验的结论: 实验结论 1)首先要检查发起请求服务器的网络带宽是否正常,避免请求服务器出现带宽瓶颈。 2)curl multi并发请求并发数有一个阈值,过高的并...
阅读(151) 评论(0)

Shadowsocks安装

Shadowsocks安装 Linux下: 1 yum install python-setuptools && easy_install pip 显示完成后,再输入 1 pip install shadowsocks 等待安装完成,显示“Successfully installed shad...
阅读(74) 评论(0)

Mysql 利用group by 分组排序

MySql的group by与oracle有所不同,查询得字段可以不用写聚合函数,查询结果取得是每一组的第一行记录。 利用上面的特点,可以利用mysql实现一种独特的排序; 首先先按某个字段进行order by,然后把有顺序的表进行分组,这样每组的成员都是有顺序的,而mysql默认取得分组的第一行。从而得到每组的最值。 最近工作用的表有这样一个需求,ip字段有重复,取最后时间更新...
阅读(52) 评论(0)

RabbitMQ与Redis队列对比

是一个Key-Value的NoSQL数据库,开发维护很活跃,虽然它是一个Key-Value数据库存储系统,但它本身支持MQ功能,所以完全可以当做一个轻量级的队列服务来使用。 简要介绍   RabbitMQ RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。消息中...
阅读(32) 评论(0)

并发插入引发的死锁问题排查

一.业务背景 我们现在的业务是一款数据产品,有不少实时计算和爬取来的数据都汇总到大数据仓库、数据挖掘平台ODPS上。然后应用在读取这些数据时,这些数据会先导入到并发读能力更强,适合结构查询的mysql上。数据端开发的同学在跑定时任务时, tps比较高,于是出现了一些线上问题:在开发过程中发现对某一包含unique key(联合的唯一索引)的表进行并发插入的时候,出现大量的死锁,使得插入几乎无...
阅读(26) 评论(0)

数据库常见死锁原因及处理

数据库是一个多用户使用的共享资源,当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。加锁是实现数据库并发控制的一个非常重要的技术。在实际应用中经常会遇到的与锁相关的异常情况,当两个事务需要一组有冲突的锁,而不能将事务继续下去的话,就会出现死锁,严重影响应用的正常执行。    在数据库中有两种基本的...
阅读(15) 评论(0)

PHP解决抢购、秒杀、抢楼、抽奖等阻塞式高并发库存防控超量的思路方法

如今在电商行业里,秒杀抢购活动已经是商家常用促销手段。但是库存数量有限,而同时下单人数超过了库存量,就会导致商品超卖甚至库存变负数的问题。 又比如:抢购火车票、论坛抢楼、抽奖乃至爆红微博评论等也会引发阻塞式高并发问题。如果不做任何措施可能在高瞬间造成服务器瘫痪,如何解决这个问题呢? 这里提出个人认为比较可行的几个思路方法: 方案一:使用消息队列来实现 可以基于例如MemcacheQ...
阅读(19) 评论(0)

高并发下的抽奖优化

一. 项目思考 由于项目发起了一个抽奖活动,发起活动之前给所有用户发短信提示他们购买了我们的产品有抽奖权益。然后用户上来进入抽奖页面点击爆增,过了一会儿页面就打不开了。后面查看了下各种日志,发现了瓶颈在数据库,由于读写冲突严重,导致响应变慢,有不少连接都超时了。后面看到监控和日志留下的数据,发现负责抽奖的微服务集群qps暴涨12倍,db的qps也涨了10倍。这很明显是一个高并发下如何摆脱数据...
阅读(21) 评论(0)
110条 共8页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:29267次
    • 积分:702
    • 等级:
    • 排名:千里之外
    • 原创:26篇
    • 转载:82篇
    • 译文:2篇
    • 评论:0条
    文章分类