nginx配置关闭chunked

Transfer-Encoding:chunked简介

通常情况下,Transfer-Encoding域的值应当为chunked,表明采用chunked编码方式来进行报文体的传输。chunked编码是HTTP/1.1 RFC里定义的一种编码方式。

chunked编码的基本方法是将大块数据分解成多块小数据,每块都可以自指定长度。Transfer-Encoding:chunked能更快的让页面呈现出来,因为它能分段下载,浏览器分段解析,例如facebook利用这个特性实现的big pipe。

在Http 1.0及之前版本中,content-length字段可有可无。在http1.1及之后版本。如果是keep alive,则content-length和chunk必然是二选一。若是非keep alive,则和http1.0一样,content-length可有可无。注:Http1.1之前的不支持keep alive。

nginx配置关闭chunked模式

在nginx 0.7.66版本之后,有一个配置项chunked_transfer_encoding可以开启或者关闭chunk模式,默认是开启的。

chunked_transfer_encoding on | off;

例如:chunked_transfer_encoding off;

作用域: http, server, location

发表在 BS架构后台语言 | 标签为 , | 一条评论

HTML5 Audio/Video 标签,属性,方法,事件汇总

src:音乐的URL
preload:预加载
autoplay:自动播放
loop:循环播放
controls:浏览器自带的控制条

Html代码

src:视频的URL
poster:视频封面,没有播放时显示的图片
preload:预加载
autoplay:自动播放
loop:循环播放
controls:浏览器自带的控制条
width:视频宽度
height:视频高度

Html代码

获取HTMLVideoElement和HTMLAudioElement对象

Js代码

//audio可以直接通过new创建对象
Media = new Audio(“http://www.abc.com/test.mp3″);
//audio和video都可以通过标签获取对象
Media = document.getElementById(“media”);

Media方法和属性:

HTMLVideoElement 和 HTMLAudioElement 均继承自 HTMLMediaElement

Js代码

//错误状态
Media.error; //null:正常
Media.error.code; //1.用户终止 2.网络错误 3.解码错误 4.URL无效

//网络状态
Media.currentSrc; //返回当前资源的URL
Media.src = value; //返回或设置当前资源的URL
Media.canPlayType(type); //是否能播放某种格式的资源
Media.networkState; //0.此元素未初始化 1.正常但没有使用网络 2.正在下载数据 3.没有找到资源
Media.load(); //重新加载src指定的资源
Media.buffered; //返回已缓冲区域,TimeRanges
Media.preload; //none:不预载 metadata:预载资源信息 auto:

//准备状态
Media.readyState; //1:HAVE_NOTHING 2:HAVE_METADATA 3.HAVE_CURRENT_DATA 4.HAVE_FUTURE_DATA 5.HAVE_ENOUGH_DATA
Media.seeking; //是否正在seeking

//回放状态
Media.currentTime = value; //当前播放的位置,赋值可改变位置
Media.startTime; //一般为0,如果为流媒体或者不从0开始的资源,则不为0
Media.duration; //当前资源长度 流返回无限
Media.paused; //是否暂停
Media.defaultPlaybackRate = value;//默认的回放速度,可以设置
Media.playbackRate = value;//当前播放速度,设置后马上改变
Media.played; //返回已经播放的区域,TimeRanges,关于此对象见下文
Media.seekable; //返回可以seek的区域 TimeRanges
Media.ended; //是否结束
Media.autoPlay; //是否自动播放
Media.loop; //是否循环播放
Media.play(); //播放
Media.pause(); //暂停

//控制
Media.controls;//是否有默认控制条
Media.volume = value; //音量
Media.muted = value; //静音

//TimeRanges(区域)对象
TimeRanges.length; //区域段数
TimeRanges.start(index) //第index段区域的开始位置
TimeRanges.end(index) //第index段区域的结束位置

事件:

Js代码

eventTester = function(e){
Media.addEventListener(e,function(){
console.log((new Date()).getTime(),e);
});
}

eventTester(“loadstart”); //客户端开始请求数据
eventTester(“progress”); //客户端正在请求数据
eventTester(“suspend”); //延迟下载
eventTester(“abort”); //客户端主动终止下载(不是因为错误引起),
eventTester(“error”); //请求数据时遇到错误
eventTester(“stalled”); //网速失速
eventTester(“play”); //play()和autoplay开始播放时触发
eventTester(“pause”); //pause()触发
eventTester(“loadedmetadata”); //成功获取资源长度
eventTester(“loadeddata”); //
eventTester(“waiting”); //等待数据,并非错误
eventTester(“playing”); //开始回放
eventTester(“canplay”); //可以播放,但中途可能因为加载而暂停
eventTester(“canplaythrough”); //可以播放,歌曲全部加载完毕
eventTester(“seeking”); //寻找中
eventTester(“seeked”); //寻找完毕
eventTester(“timeupdate”); //播放时间改变
eventTester(“ended”); //播放结束
eventTester(“ratechange”); //播放速率改变
eventTester(“durationchange”); //资源长度改变
eventTester(“volumechange”); //音量改变

发表在 Web前台开发技术 | 标签为 , , | 留下评论

php脚本超时时间设置

设置PHP脚本执行超时的时间有下面这样一些方法:
php.ini 中缺省的最长执行时间是 30 秒,这是由 php.ini 中的 max_execution_time 变量指定,倘若你有一个需要颇多时间才能完成的工作,例如要发送很多电子邮件给大量收件者,或者要进行繁重的数据分析工作,服务器会在 30 秒后强行中止正在执行的程序,如何解决这个问题呢。

一、在php.ini里面设置 max_execution_time = 1800;

二、通过PHP的ini_set 函数设置 ini_set(“max_execution_time”, “1800”);

三、通过set_time_limit 函数设置 set_time_limit(1800) ;

发表在 BS架构后台语言 | 标签为 , | 留下评论

Windows+nginx配置flv,mp4视频流任意拖动

nginx官网地址(最新下载地址):http://nginx.org/en/download.html
下载nginx/Windows版本,本文发布时最新版本是:nginx/Windows-1.3.11

下载解压后,把所有文件放到你的任意盘的任意地方
如果你之前安装过iis,那么只需要把iis里的网站关掉就可以了(当然也可以直接删除IIS),如果不关掉的话就要注意配置nginx的时候的使用端口不能和iis的冲突,为了方便说明,请关掉iis

下面配置nginx
找到conf/nginx.conf文件(找不到说明你没开显示文件后缀名的功能),用记事本打开
在server段,不知道server段在哪?那就找

Windows+nginx配置flv,mp4视频流任意拖动
这样服务器就支持flv,mp4的实时拖动了

发表在 操作系统相关 | 标签为 , , | 留下评论

让windows下的svn限制强制写日志以及只能修改自己日志脚本

1、svn客户端修改日志功能(且只能修改自己日志)
找到版本库中hooks目录下,将pre-revprop-change.tmpl文件复制为pre-revprop-change.bat文件,然后将pre-revprop-change.bat文件内容改为:

2、到版本库中hooks目录下,将pre-commit.tmpl文件复制为pre-commit.bat文件,然后将pre-commit.bat 文件内容改为:

发表在 应用工具软件 | 标签为 , | 留下评论

MySql表存储引擎转换的方法总结

注意:存储引擎修改之后,原始存储引擎的专有特性都会丢失。
例如,如果将一个InnoDB转换成MyISAM存储引擎,再转回来,那么最初在原InnoDB定义的外键都会丢失。

方法-1、ALTER TABLE

把表从一种存储引擎换成另一种存储引擎最简单的方法就是ALTER TABLE命令。

特点:
a、适合所有存储引擎。
b、转换过程会耗费大量时间。
c、转换时候源表会被读加锁。

方法-2、转储(Dump)和导入(Import)

使用mysqldump工具导出数据表,修改转储文件的CREATE TALBE 语句。

修改点:
a、删除转储文件里的DROP TALBE语句,防止数据转储失败时,源数据也丢失。

b、修改表名,数据库绝对不允许相同的表名出现,即使存储引擎不同。

c、修改存储引擎。

方法-3、CREATE和SELECT
在方法-1的速度和方法-2的安全性之间做了一个平衡。先创建一张表,然后用mysql的INSERT….SELECT语句来转移数据。

发表在 数据库相关技术 | 标签为 , , , | 留下评论

在windows系统下配置php扩展Redis功能

1 首先,查看所用php编译版本V6/V9 在phpinfo()中查看

05eba02c-ce36-32af-88d8-8c53856ea927[1]

2 将php_redis.dll和php_igbinary.dll放在php扩展目录中(ext),并修改配置文件php.ini

添加 扩展的时候一定要
extension=php_igbinary.dll
extension=php_redis.dll
这个顺序

否则重启Apache的时候会出现,PHP startup 错误

3 重新启动服务,查看phpinfo(),下面表示成功;

5c2af525-b89e-35bb-9bd5-996c1ffc10a2[1]

点击下载:windows环境安装redis扩展(php 5.3)

发表在 CS架构后台语言, Web前台开发技术 | 标签为 , , | 留下评论

nginx虚拟目录配置

今天搞了N久的虚拟目录配置,在几乎要放弃的时侯偶然看到一篇文章,将我的问题搞定

原贴地址:http://blog.sina.com.cn/s/blog_6c2e6f1f0100l92h.html

我的需求是这样的,系统有一个专门的文件夹用于存放图片,css,js或者附件,如:
http://www.test.com/resources/images/a.jpg
http://www.test.com/resources/css/a.css
http://www.test.com/resources/js/a.js
http://www.test.com/resources/attach/a.doc

这样的配置对于apache来说那相当容易,

需要通过location uri规则匹配访问到该文件夹,我使用如下配置:

试了N多次都能访问不到,一直报404,无比杯具!最后拜读了上面提供的blog才解决,发现跟原博主一样,没有真正搞清楚,location中root和alias的区别,最后修改成:

成功实现了我的需求。

原贴如下:

 

niginx 似乎没有虚拟目录的说法,但是可以指定请求路径时nginx访问的路径,也算是一个解决办法。

(原文链接 http://ddbiz.com/?p=187)

要注意的是, location /phpadmin/ {} 和 location /phpadmin {} 是完全不同的。

前者可以访问到目录,而后者将被重定向到服务器,如: http://127.0.0.1/phpadmin ,将被重定向到 http://_/phpadmin

下面这个配置和上面基本类似,唯一的不同是,所有对 /phpadmin/的访问将正确解析,而其他访问则返回页面不存在(404)的信息。

发表在 应用工具软件, 操作系统相关 | 标签为 , | 留下评论

Nginx下配置虚拟目录并支持PHP

Nginx虚拟目录支持PHP也是花了不少时间查找资料研究摸索,最终用下面两段解决。下面不是一段完整的Nginx配置文件,对于该配置片段简单解释如下:

1. 该文件配置一个主机www.mydomain.com在/data/Service下
2. 将一个在/data/Forum下的论坛程序挂在www.mydomain.com/Forum下,这里我用的是phpBB3
3. 将一个在/data/Mantis下的Bug跟踪管理程序MaintisBT挂在www.mydomain.com/Mantis下

phpBB3和MantisBT分别是两个独立的PHP程序。

对于Nginx虚拟目录支持分两段:

1. 第一段用alias解决虚拟目录问题,使用rewrite处理访问重定向,并传递用于fastcgi的正确的脚本位置
2. 第二段用于处理所有的非PHP文件在虚拟目录中的访问,没有第二段,访问非PHP文件就是出现404

发表在 应用工具软件, 操作系统相关 | 标签为 , | 留下评论

使用PHP的反射Reflection获取对象信息

PHP5添加了一项新的功能:Reflection。这个功能使得程序员可以reverse-engineer class, interface,function,method and extension。通过PHP代码,就可以得到某object的所有信息,并且可以和它交互。

假设有一个类Person:

通过ReflectionClass,我们可以得到Person类的以下信息:

  • 常量 Contants
  • 属性 Property Names
  • 方法 Method Names
  • 静态属性 Static Properties
  • 命名空间 Namespace
  • Person类是否为final或者abstract

只要把类名”Person”传递给ReflectionClass就可以了:

获取属性(Properties):

默认情况下,ReflectionClass会获取到所有的属性,private 和 protected的也可以。如果只想获取到private属性,就要额外传个参数:

可用参数列表:

  • ReflectionProperty::IS_STATIC
  • ReflectionProperty::IS_PUBLIC
  • ReflectionProperty::IS_PROTECTED
  • ReflectionProperty::IS_PRIVATE

如果要同时获取public 和private 属性,就这样写:ReflectionProperty::IS_PUBLIC | ReflectionProperty::IS_PROTECTED

应该不会感觉陌生吧。

通过$property->getName()可以得到属性名,通过getDocComment可以得到写给property的注释。

有点不可思议了吧。竟然连注释都可以取到。

获取方法(methods):通过getMethods() 来获取到类的所有methods。返回的是ReflectionMethod对象的数组。不再演示。

最后通过ReflectionMethod来调用类里面的method。

有点意思。

发表在 BS架构后台语言 | 标签为 , , , | 留下评论