`
ycsk
  • 浏览: 154925 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Nginx的perl模块开发

阅读更多
因为公司业务需要记录每一个用户某一个类型的文件最后一次请求,提供继续阅读功能,所以在Nginx里加了一个小模块,当有用户请求进来时,响应数据并在Memcached和Mongodb记录此URL。

配置Nginx
引用

perl_modules perl/lib;
perl_require bookvisit.pm;

引用

location ~* ^.+\.bcs$
{
perl bookvisit::handler;
root /byread/books/vipbook;
}


package bookvisit;
use warnings;
use nginx;
use DBI;
use POSIX qw/strftime/;
use MongoDB;
use Cache::Memcached;

my $connection = MongoDB::Connection->new(host => 'localhost', port => 27017);
my $database   = $connection->get_database('bookvisit');
my $visitlog = $database->get_collection('visitlog');
my $lastpage = $database->get_collection('lastpage');

my $memd = new Cache::Memcached {
	'servers' => ["192.168.0.139:11211"],
	'debug' => 0,
	'compress_threshold' => 10_000,
};

sub handler {
	my $r = shift;
	return OK if $r->header_only;
	if (! -f $r->filename) {
		return DECLINED;
	}
	else
	{
		$r->header_out('Content-Type','text/html; charset=utf-8');
		$r->send_http_header;
		@s=stat($r->filename);
		$r->header_out('Content-Length',$s[7]);
		$r->header_out('Length',$s[7]);
		$r->sendfile($r->filename);
		$r->rflush;

		$uri = $r->uri;
		$args = $r->args;

		if( $uri =~ /\/(\w+)\/(\d+).(bcs|txt)/ )
		{
			$bookid = $1;
			$isvip = "0";
			$page = 'http://192.168.0.137'.$uri;
		}
		if( $uri =~ /\/(\d+)\/(f|r)\/(\d+).(bcs|txt)/ )
		{
			$bookid = $1;
			$isvip = "1";
			$page = 'http://192.168.0.138'.$uri;
		}
		if( $args =~ /byid=(\d+)/ )
		{
			$byid = $1;
		}
		$visitime = strftime("%Y-%m-%d %H:%M:%S", localtime time);
		&lastpage;
		&meminsertpage;
		return OK;
	}
}

sub lastpage {
	$lastpage->update({'byid' => $byid},{'$set' => {page => $page,visitime => $visitime} },{"upsert" => 1});
	return OK;
}

sub meminsertpage {
	$memd->set("_book_lastest_read_$byid",$page);
	return OK;
}

1;
__END__


分享到:
评论
3 楼 dailingang 2010-09-26  
我的遇到的情况是 在firefox下测试正常,在ie6下怎么都行。我是简单的开启了sendfile on;和tcp_nopush  on;
2 楼 dailingang 2010-09-26  
博主 请问有没有完整点的例子啊,我在我的电脑上测试怎么都不行啊,我现在也想在nginx做断点继传。
1 楼 yymmiinngg 2010-08-25  
看看我的东东吧,如果能给你带来帮助我会很快乐的。
http://yymmiinngg.iteye.com/blog/746563

相关推荐

    深入理解Nginx模块开发与架构解析(第2版)

    《深入理解Nginx模块开发与架构解析(第2版)》是一本专注于Nginx技术的专业书籍,针对Nginx的内部工作机制和模块开发进行了深入的探讨。本书旨在帮助读者掌握Nginx的核心概念、架构设计以及如何进行模块开发,从而...

    Nginx模块源码 nginx-notice-2

    **Nginx模块源码分析:...理解其源码可以提升对Nginx模块开发的理解,同时,编译和配置过程是学习Nginx扩展功能的重要实践环节。在实际应用中,这样的模块可以帮助我们实现定制化的服务器功能,以满足特定业务需求。

    深入理解Nginx模块开发与架构解析第2版

    《深入理解Nginx模块开发与架构解析第2版》这本书是针对Nginx服务器的高级教程,旨在帮助读者深入掌握Nginx的核心模块开发和整体架构。Nginx是一款高性能、轻量级的Web服务器/反向代理服务器,因其优秀的性能和灵活...

    Linux下用Nginx作Perl程序服务器及其中Perl模块的配置

    ### Linux下用Nginx作为Perl程序服务器及Perl模块配置详解 #### 一、概述 在Linux环境下,利用Nginx作为Web服务器并配合Perl语言处理动态内容是一种实用且高效的技术方案。尤其对于那些需要高性能处理能力的应用...

    Nginx+perl的web框架(Npweb )

    1. **安装Nginx**:首先需要在服务器上安装Nginx,配置文件中启用Perl模块。在Nginx配置中,通过`location`指令指定处理Perl脚本的路径。 2. **安装Perl和相关模块**:确保Perl环境已经就绪,还需安装`CGI::Fast`等...

    Nginx全套学习指南

    第8章 Nginx模块开发 第9章 Nginx的Web缓存服务与新浪网的开源NCACHE模块 第10章 Nginx在国内知名网站中的应用案例 第11章 Nginx的非典型应用实例 第12章 Nginx的核心模块 第13章 Nginx的标准HTTP模块 第14章 Nginx...

    Nginx 核心模块与配置实践1

    - **PCRE库**:Perl Compatible Regular Expressions库,用于支持正则表达式匹配,是Nginx配置中必不可少的一部分。 - **zlib库**:提供HTTP内容的gzip压缩,减小网络传输量。 - **OpenSSL开发库**:对于支持...

    Nginx服务器的安装与配置.pdf

    第8章 Nginx模块开发.pdf 第9章 Nginx的Web缓存服务与新浪网的开源NCACHE模块.pdf 第10章 Nginx在国内知名网站中的应用案例.pdf 第11章 Nginx的非典型应用实例.pdf 第12章 Nginx的核心模块.pdf 第13章 Nginx的标准...

    跟我学Nginx + Lua开发

    OpenResty是基于Nginx与LuaJIT的一个高性能Web平台,它以标准Nginx核心,集成了大量的精心设计的Nginx模块,主要包括:ngxLua模块、MySQL模块、Redis模块、Memcached模块等。这些模块使得开发者能够在Nginx内直接...

    实战Nginx.取代Apache的高性能Web服务器

    第8章 Nginx模块开发 8.1 Nginx模块概述 8.2 Nginx模块编写实践 第9章 Nginx的Web缓存服务与新浪网的开源NCACHE模块 9.1 什么是Web缓存? 9.2 Nginx的Web缓存服务 9.3 新浪网开源软件项目——基于Nginx的N...

    跟我学Nginx+Lua开发.pdf

    ### Nginx+Lua开发环境搭建与应用 #### 一、Nginx+Lua开发环境简介 《跟我学Nginx+Lua开发》是一本针对Nginx与Lua结合使用的教程书籍,旨在帮助读者理解如何利用这两种技术进行高效且灵活的Web应用开发。Nginx作为...

    cpp-Nginx开发从入门到精通

    本书旨在满足广大开发者和运维人员对Nginx模块开发及内部工作原理的学习需求。 Nginx是一款高性能的反向代理服务器,其事件驱动的非阻塞I/O模型使得它在处理高并发请求时表现出色。在深入讲解Nginx开发之前,我们...

    Nginx 核心模块与配置实践 (1)1

    3. **PCRE库**:Perl Compatible Regular Expressions,用于支持Nginx中的正则表达式匹配,由Philip Hazel开发。 4. **zlib库**:用于HTTP包内容的gzip压缩,节省网络传输带宽。 5. **OpenSSL开发库**:如果需要...

    Ubuntu下nginx1.6和sticky1.1安装配置资料 包

    开始安装过程之前,确保系统已经更新到最新,并且安装了必要的开发工具,例如build-essential和libpcre3-dev,因为Nginx的编译需要它们。接下来,下载Nginx源代码(在这个案例中是1.6版本),解压并进入目录: ```...

    Nginx实战:取代Apache的高性能Web服务器

    第8章 Nginx模块开发 第9章 Nginx的Web缓存服务与新浪网的开源NCACHE模块 第10章 Nginx在国内知名网站中的应用案例 第11章 Nginx的非典型应用实例 第12章 Nginx的核心模块 第13章 Nginx的标准HTTP模块 第14章 Nginx...

    Nginx 模块参考手册中文版.pdf

    2. **嵌入式Perl模块**(Embedded Perl):允许在配置文件中嵌入Perl脚本。 3. **FLV模块**(FLV):处理Flash视频流。 4. **GzipPrecompression模块**(Gzip Precompression):提供预压缩功能。 5. **RandomIndex...

    Nginx 手册

    8.Nginx模块开发 9.Nginx的web缓存服务与新浪网的开源NCACHE模块 10.Nginx在国内知名站点中的应用案例 11.Nginx的非典型应用实例 12.Nginx的核心模块 13.Nginx的标准HTTP模块 14.Nginx的其他HTTP模块 15.Nginx的邮件...

Global site tag (gtag.js) - Google Analytics