PHP超大文件下载,断点续传下载示例代码

最近做项目的时候需要文件下载,用普通php读取源文件下载的时候出现一个php内存溢出的问题,原因就是在于下载的时候读取生成的临时文件过大,PHP内存无法容纳,一开如是想到更改PHP内存限制,但是这个只是一个缓兵之计,于是想到了另外一个方法是把文件分次读取,并下载。

以下是源代码:

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

Nginx和Apache 优缺点整理

nginx 相对 apache 的优点:

  • 轻量级,同样起web 服务,比apache 占用更少的内存及资源
  • 抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能
  • 高度模块化的设计,编写模块相对简单
  • 社区活跃,各种高性能模块出品迅速啊

apache 相对nginx 的优点:

  • rewrite ,比nginx 的rewrite 强大
  • 模块超多,基本想到的都可以找到
  • 少bug ,nginx 的bug 相对较多
  • 超稳定

存在就是理由,一般来说,需要性能的web 服务,用nginx 。如果不需要性能只求稳定,那就apache 吧。后者的各种功能模块实现得比前者,例如ssl 的模块就比前者好,可配置项多。
这里要注意一点,epoll(freebsd 上是 kqueue )网络IO 模型是nginx 处理性能高的根本理由,但并不是所有的情况下都是epoll 大获全胜的,如果本身提供静态服务的就只有寥寥几个文件,apache 的select 模型或许比epoll 更高性能。当然,这只是根据网络IO 模型的原理作的一个假设,真正的应用还是需要实测了再说的。

  • 作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。在高连接并发的情况下,Nginx是Apache服务器不错的替代品: Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一. 能够支持高达 50,000 个并发连接数的响应, 感谢Nginx为我们选择了 epoll and kqueue 作为开发模型.
  • Nginx作为负载均衡服务器: Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务, 也可以支持作为 HTTP代理 服务器对外进行服务. Nginx采用C进行编写, 不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多.
  • 作为邮件代理服务器: Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器), Last.fm 描述了成功并且美妙的使用经验.
  • Nginx 是一个安装非常的简单 , 配置文件非常简洁(还能够支持perl语法), Bugs 非常少的服务器: Nginx 启动特别容易, 并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动. 你还能够不间断服务的情况下进行软件版本的升级 .
  • Nginx优于apache的主要两点:1.Nginx本身就是一个反向代理服务器 2.Nginx支持7层负载均衡;其他的当然,Nginx可能会比apache支持更高的并发,但是根据NetCraft的统计,2011年4月的统计数据,Apache依然占有62.71%,而Nginx是7.35%,因此总得来说,Aapche依然是大部分公司的首先,因为其成熟的技术和开发社区已经也是非常不错的性能。
  • Nginx 配置简洁, Apache 复杂Nginx 静态处理性能比 Apache 高 3倍以上Apache 对 PHP 支持比较简单,Nginx 需要配合其他后端用Apache 的组件比 Nginx 多
发表在 应用工具软件 | 标签为 , | 留下评论

如何使用mysql 将时间戳直接转换成日期时间

date为需要处理的参数(该参数是Unix 时间戳),可以是字段名,也可以直接是Unix 时间戳字符串
后面的 ‘%Y%m%d’ 主要是将返回值格式化
例如:

UNIX_TIMESTAMP()是与之相对正好相反的时间函数

UNIX_TIMESTAMP(), UNIX_TIMESTAMP(date)

若无参数调用,则返回一个 Unix timestamp (‘1970-01-01 00:00:00′ GMT 之后的秒数) 作为无符号整数。若用date 来调用 UNIX_TIMESTAMP(),它会将参数值以’1970-01-01 00:00:00’ GMT后的秒数的形式返回。date 可以是一个 DATE 字符串、一个 DATETIME字符串、一个 TIMESTAMP或一个当地时间的YYMMDD 或YYYMMDD格式的数字。

例如:

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

详解Apache配置站点与虚拟目录

Linux系统环境

一、单站点配置:

在apache中,配置一个站点是最基础的配置,在这里我只是要配置一个最基础的WEB站点,因此配置方式也是非常简单,具体配置方式如下:

 

二、单站点虚拟目录配置:

对于不同的DocumentRoot指定的不同页面,我们可以通过别名的方式来实现,实现的功能与IIS中的虚拟目录一样,具体的配置如下:

 

三、多站点配置:

一台apache服务器如果跑的小网站,不可能只跑一个站,可能需要在这台服务器上配置很多个站点,实现配置方式也是比较简单的,具体实现方式如下:

 

四、多站点虚拟目录配置:

由于配置多站点的方式有两种,本文就用第一种最常用的单IP多域名的方式进行配置,具体配置如下:

 

Windows系统环境

一、基于名称的虚拟主机

打开Apache2\conf下的httpd.conf,查找#NameVirtualHost *:80,去掉前面的注释。

添加虚拟主机www.test.com,在httpd.conf的最后,添加如下代码:

二、增加虚拟目录

1、全局的

如httpd.conf中的/icons/

2、虚拟主机内的

在<VirtualHost *:80></VirtualHost>之间添加上面内容

如:

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

如何刷新DNS缓存

运行:ipconfig /displaydns这个命令,查看一下本机已经缓存了那些的dns信息的,然后输入下面的命令

ipconfig /flushdns

这时本机的dns缓存信息已经清空了,我们可以再次输入第一次输入的命令来看一下,

ipconfig /displaydns

ipconfig /displaydns显示dns缓存

ipconfig /flushdns 刷新DNS记录

ipconfig /renew重请从DHCP服务器获得IP

先可以输入ipconfig /displaydns显示dns缓存根据显示结果你可以很直观的看到现在你的DNS所指上的IP,然后运行ipconfig /flushdns 刷新DNS记录和ipconfig /renew重请从DHCP服务器获得IP就可以了,如果一次刷新没有用,可以多次用ipconfig /flushdns进行刷新

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

使用jquery来实现撒金币效果




稚子网络工作室送金币啦 http://blog.zzstudio.net









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

jQuery旋转插件rotate的使用—rotate支持(ie/Firefox/SafariOpera/Chrome)

网上发现一个很有意思的jQuery旋转插件,支持Internet Explorer 6.0+ 、Firefox 2.0 、Safari 3 、Opera 9 、Google Chrome,高级浏览器下使用Transform,低版本ie使用VML实现。

调用和方法:

angle参数:[Number] – 默认为 0 – 根据给定的角度旋转图片

例如:

rotate(parameters)

parameters参数:[Object] 包含旋转参数的对象。支持的属性:

1.angle属性:[Number] – default 0 – 旋转的角度数,并且立即执行

例如:

2.bind属性:[Object] 对象,包含绑定到一个旋转对象的事件。事件内部的$(this)指向旋转对象-这样你可以在内部链式调用- $(this).rotate(…)。例如 (click on arrow):

3.animateTo属性:[Number] – default 0 – 从当前角度值动画旋转到给定的角度值 (或给定的角度参数)例如: 结合上面的例子,请参阅使用。

4.duration属性:[Number] – 指定使用animateTo的动画执行持续时间例如 (click on arrow):

5.step属性:[Function] – 每个动画步骤中执行的回调函数,当前角度值作为该函数的第一个参数

6.easing属性:[Function] – 默认 (see below) – Easing function used to make animation look more natural. It takes five parameters (x,t,b,c,d) to support easing from http://gsgd.co.uk/sandbox/jquery/easing/ (for more details please see documentation at their website). Remember to include easing plugin before using it in jQueryRotate!Default function:

Where:t: current time,

b: begInnIng value,

c: change In value,

d: duration,

x: unused

No easing (linear easing):

Example (click on arrow):

7.callback属性:[Function] 动画完成时执行的回调函数例如 (click on arrow):

getRotateAngle

这个函数只是简单地返回旋转对象当前的角度。

例如:

stopRotate

这个函数只是简单地停止正在进行的旋转动画。

例如:

用这个可以实现很多关于旋转的网页特效。

jqueryrotate项目地址:http://code.google.com/p/jqueryrotate/

代码示例:http://code.google.com/p/jqueryrotate/wiki/Examples

稚子的成长博客

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

C#判断文件路径或文件是否存在的方法

//判断文件路径是否存在,不存在则创建文件夹
if (!System.IO.Directory.Exists(@"D:\Export"))
{
System.IO.Directory.CreateDirectory(@"D:\Export");//不存在就创建目录
}
//判断文件是否存在
添加引用using System.IO;
if(File.Exists(@"文件路径"))
{
//存在
}
else
{
//不存在
}

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

解决.NET引用Excel操作时无法关闭Excel.exe进程的办法

.NET引用Excel操作时无法关闭Excel.exe进程的解决方法

在使用Office类库Microsoft.Office.Interop.Excel导入导出Excel文件操作后,即使调用Application的Quit()函数还是无法关闭Excel进程,在资源管理器中还是存在。

查询一些网上资料该问题终于解决了。具体步骤如下:

1.创建Excel的Application对象

2.获取Application的Workbooks对象集合

3.添加一个工作薄Workbook对象

4.获取该工作薄中的一个Worksheet对象

5.对该Worksheet对象中的Range对象进行操作。

6.调用Workbook对象的Save或SaveAs函数,保存工作簿

7.调用Workbook对象的Close函数,关闭该工作簿

8.调用Application对象的Quit函数,关闭整个Excel程序。

一般到这一步大家都以为处理结束,Excel进程会结束,但实际运行时,即使关闭整个应用程序Excel进程也不会关闭。在网上会见到一些解决方法枚举系统中所有的Excel进程,然后将其逐个杀死,但是这样可能会误杀一些用户开启的Excel进程。

其实,没有退出Excel进程的原因只是由于一些资源没有释放,所以必须要手动释放这些资源,并且要显式调用垃圾回收GC进行垃圾回收。只需要在以上第8步之后,增加一下操作。

9.调用System.Runtime.InteropServices.Marshal.ReleaseComObject依次释放Range、Worksheet、Workbook、Workbooks和Application对象。

10.调用GC的垃圾回收方法。

以上操作的代码如下:

以上资源释放时缺少一种、释放次序错误或未手动调用GC都会导致Excel进程驻留在系统中。

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

ASP.net获取当前url各种属性(文件名、参数、域名等)的方法

假设当前页完整地址是:http://www.test.com/aaa/bbb.aspx?id=5&name=kelli

“http://”是协议名

“www.test.com”是域名

“aaa”是虚拟目录名

“bbb.aspx”是页面名(文件名)

“id=5&name=kelli”是参数

【1】获取 完整url (协议名+域名+虚拟目录名+文件名+参数)

string url=Request.Url.ToString();

url= http://www.test.com/aaa/bbb.aspx?id=5&name=kelli

【2】获取 虚拟目录名+页面名+参数:

string url=Request.RawUrl;

(或 string url=Request.Url.PathAndQuery;)

url= /aaa/bbb.aspx?id=5&name=kelli

【3】获取 虚拟目录名+页面名:

string url=HttpContext.Current.Request.Url.AbsolutePath;

(或 string url= HttpContext.Current.Request.Path;)

url= aaa/bbb.aspx

【4】获取 域名:

string url=HttpContext.Current.Request.Url.Host;

url= www.test.com

【5】获取 参数:

string url= HttpContext.Current.Request.Url.Query;

url= ?id=5&name=kelli

Request.QueryString[“id”]和Request.QueryString[“name”]访问各参数

Request.UrlReferrer可以获取客户端上次请求的url的有关信息, 这样我们就可以通过这个属性返回到“上一页”。

【6】获取 端口:
int port = HttpContext.Current.Request.Url.Port;
port = 80

同样地,Request.UrlReferrer.Query可以获取客户端上次请求的url的有关参数部分。

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