- 浏览: 99434 次
最新评论
-
ycye:
博主好,我研读了这篇博文,有一块没能理解:在msg的生命周期中 ...
ngx-push-stream模块源码学习(五)——内存清理
文章列表
webp的php扩展
- 博客分类:
- webp
2了,imagemagick支持webp,使用imagick即可,不需编写此扩展
下载地址
https://github.com/godlovesdog/webp
使用
/*
* 将JPEG/PNG 图片内存转为webp
* 纯内存操作
*/
$opts = getopt('f:');
$blob = file_get_contents("/home/lvbenwei/".$opts['f']);
$res = image2webp($blob);
$arr = explode('/',$opts['f']);
file_put_con ...
向github提交代码时遇到以下问题:
error: SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed while accessing https://github.com/godlovesdog/webp.git/info/refs
解决:
env GIT_SSL_NO_VERIFY=true git push -u origin ma ...
Varnishlog tag explanation
The intention of this page is to explain what the different tags varnishlog outputs mean.
Format
830 ReqEnd c 877345549 1233949945.075706005 1233949945.075754881 0.017112017 0.000022888 0.000025988
830 is identifies the transaction, it will be assigned to onl ...
随着NoSQL的理念越来越火,我总结一下在大数据、大并发下数据快速响应的知识,今天先开个篇,希望自己能够慢慢形成系列。
这方面做的比较早的是Memcached.Anatoly Vorobey和Brad Fitzpatrick为了提升LiveJournal.com访问速度,开发了Memcached。随着他的开源,越来越多的公司开始采用他来部署实时数据应用。
2007年后,互联网的数据越来越庞大,传统的数据库模式已经无法满足大量数据的实时访问问题,而随着内存的价格越来越便宜,人们开始倾向于用内存来存储一些访问度比较高的数据。以取得更大的访问速度。
Memcached的出现,也使得key-valu ...
适用场景
众所周知,varnish是一个十分强大的缓存服务器,比squid的性能要高出很多,但相比一个最大的缺点就是如果varnish进程挂掉或服务器down机,那么所有的缓存就全部丢失了。结果就是:
原来所有缓存的文件都需要全部回源,发生雪崩。
重新计算请求数据,影响效率
那么有什么好的方法在服务器重新解析之前,可以把所有的缓存都重新找回来类,答案是肯定的,这里我用到varnishreplay 这一利器。
操作
varnishlog -D -a -w /var/log/varnish.log
如上相当于一个记录器,把用户的访问都写到一个log文件中
varnishrepl ...
ngx reload时,服务器与所有订阅者已断开连接,而客户端并没有感知到
ngx多worker模式下,当订阅者数目达到一定值时,无法稳定提供发布消息到订阅者的服务;单worker下不存在这个问题
1.定时器
采用nginx自身的定时器管理机制,具体细节待学习过nginx源码后加以补充
2.channel的生成周期
(0)、初始(诞生)
发布、订阅均有可能产生channel
发布:向channel以post的形式发布消息时,如果不存 ...
一、概述
push stream模块允许三种模式的订阅者:
longpolling:每收到服务端响应数据即断开连接然后迅速重连,连接耗时可以忽略
stream:与服务端保持长连接,持续不断的请求->响应
polling:以轮询的方式向等待服务端响应(只接受一次数据)——(个人理解)
本文重点说明前两种。
二、流程
上一篇博文中捎带提到了订阅者的销毁时间——发送完MSG后(ngx_http_push_stream_send_response_finalize),本文将详细说明其讲解其诞生过程。
从上述流程可以看出模块对longpolling和stream两种请求的处理方式有相同 ...
一、概述
发布:发布者将MSG post到某一特定通道上,channel将信息缓存
在说明发布流程之前有必要说明下channel和msg的数据结构。
二、数据结构
2.1 MSG
发布时,模块先将消息转化为ngx_http_push_stream_msg_t的数据结构进行存 ...
本文重点介绍push stream模块的构成,至于nginx如何启动、维护该模块不会详细阐述,以后有时间会做详细阐述。
一、模块定义
1.1. 模块配置
通用nginx模块的配置struct有三种,分别是main,server和location。本模块会涉及到main和location两个域的配置。名称分别为:ngx_http_push_stream_main_conf_t和ngx_http_push_stream_loc_conf_t.
具体模块配置请参考nginx官网:http://wiki.nginx.org/HttpPushStre ...
一、概述
与传统的request-response的web应用模式不同,comet是一种长连接(long-held)的应用模式,从而允许服务端主动向客户端推送数据。
主流的comet技术主要有以下两个分支:
分类 描述streaming 客户端和服务器端保持一 ...
1.下载站:
http://sourceforge.net/projects/boost/files/boost/1.48.0/
2.安装
tar -xzvf boost_1_48_0.tar.g -C ~/source
cd source/boost_1_48_0/
./bootstrap.sh
sudo ./bjam --layout=versioned --build-type=complete --toolset=gcc install
3.设置环境变量
在/etc/profile.d新建可执行文件boost.sh,添加文件内容:
#!/bin/sh
...
小菜对ngx的使用仍停留在“复杂可实现”的程度,写出的ngx配置文件,虽然可用,但让明眼人一看不禁想骂一句“oh,shit!”
之前对rewrite的了解只停留在感性的url重写的层面上,对于为什么要进行重写没有体会。下面结合最近的项目时间谈谈对rewrite的认识
1. 对于rest化的url针对请求方式进行rewrite
e.g
RESTFUL uri——http://example.com/user/$uid/photo
需求:
请求方式期望处理GET获取某一张照片的信息POST添加照片PUT更新照片信息DELETE删除照片
针对上述需求完全 ...
最近在维护图床——图片存储、优化,针对业务需要,一张图片要切成多个尺寸,QPS较低,而此时展现机却非常闲,尝试进行动态切图。实现中对两种切图方案进行比较分析:
1. nginx+php+fastcgi+image filter module+gd
具体实践可参见http://doyoueat.iteye.com/blog/1279493
2. nginx+php+fastcgi+imagick
#ngx conf
location ~* ^/((resize|mugshot)/(\d+)?_(\d+)?_(\d+)?/)?([^/]*)\.(jpg|png|bmp ...