服务器 归档

  • 服务器上一直用着mysql_pconnect,之前听说它会出现各种各样的问题,但服务器一直没事,也就没去管。今天看这篇文章,才知道原来mysql_pconnect有这么多的道道。 原文地址:http://www.cnblogs.com/funlake/archive/2011/09/08/2171822.html   php的mysql持久化连接,美好的目标,却拥有糟糕的口碑,往往令人敬而远之。这到底是为啥么。近距离观察后发现,这家伙也不容易啊,要看apache的脸色,还得听mysql指挥。   对于做为apache模块运行的php来说,要实现mysql持久化连接,首先得取决于apache这个web服务器是否支持Keep-Alive。   Keep-Alive   Keep-Alive是什么东西?它是http协议的一部分,让我们复习一下没有Keep-Alive的http请求,从客户在浏览器输入一个有效url地址开始,浏览器就会利用socket向url对应的web服务器发送一条tcp请求,这个请求成功一次就得需要来回握三次手才能确定,成功以后,浏览器利用socket tcp连接资源向web服务器请求http协议,发送以后就等着web服务器把http返回头和body发送回来,发回来后浏览器关闭socket连接,然后做http返回头和body的解析工作,最后呈现在浏览器上的就是漂亮的页面了。这里面有什么问题呢?tcp连接需要三次握手,也就是来回请求三次方能确定一个tcp请求是否成功,然后tcp关闭呢?来回需要4次请求才能完成!每次http请求就3次握手,4次拜拜,这来来回回的不嫌累啊,多少时间和资源都被浪费在socket连接关闭上了,能不能一次socket tcp连接发送多次http请求呢?于是Keep-Alive就应运而生,http/1.0里需要客户端自己在请求头加入Connection:Keep-alive方能实现,在这里我们只考虑http1.1了,只需要设置一下apache,让它默认就是Keep-Alive持久连接模式(apache必须1.2+才能支持Keep-Alive).在httpd.conf里找到KeepAive配置项,果断设置为On,MaxKeepAliveRequests果断为0(一个持久tcp最多允许的请求数,如果过小,很容易在tcp未过期的情况下,达到最大连接,那下次连接就又是新的tcp连接了,这里设置0表示不限制),然后对于mysql_pconnect最重要的选项KeepAliveTimeout设置为15(表示15秒).   好了,重启apache,测试一下,赶紧写行东西 <?php echo

    [转]mysql_pconnect的水挺深,apache下的数据库长连接

    服务器上一直用着mysql_pconnect,之前听说它会出现各种各样的问题,但服务器一直没事,也就没去管。今天看这篇文章,才知道原来mysql_pconnect有这么多的道道。 原文地址:http://www.cnblogs.com/funlake/archive/2011/09/08/2171822.html   php的mysql持久化连接,美好的目标,却拥有糟糕的口碑,往往令人敬而远之。这到底是为啥么。近距离观察后发现,这家伙也不容易啊,要看apache的脸色,还得听mysql指挥。   对于做为apache模块运行的php来说,要实现mysql持久化连接,首先得取决于apache这个web服务器是否支持Keep-Alive。   Keep-Alive   Keep-Alive是什么东西?它是http协议的一部分,让我们复习一下没有Keep-Alive的http请求,从客户在浏览器输入一个有效url地址开始,浏览器就会利用socket向url对应的web服务器发送一条tcp请求,这个请求成功一次就得需要来回握三次手才能确定,成功以后,浏览器利用socket tcp连接资源向web服务器请求http协议,发送以后就等着web服务器把http返回头和body发送回来,发回来后浏览器关闭socket连接,然后做http返回头和body的解析工作,最后呈现在浏览器上的就是漂亮的页面了。这里面有什么问题呢?tcp连接需要三次握手,也就是来回请求三次方能确定一个tcp请求是否成功,然后tcp关闭呢?来回需要4次请求才能完成!每次http请求就3次握手,4次拜拜,这来来回回的不嫌累啊,多少时间和资源都被浪费在socket连接关闭上了,能不能一次socket tcp连接发送多次http请求呢?于是Keep-Alive就应运而生,http/1.0里需要客户端自己在请求头加入Connection:Keep-alive方能实现,在这里我们只考虑http1.1了,只需要设置一下apache,让它默认就是Keep-Alive持久连接模式(apache必须1.2+才能支持Keep-Alive).在httpd.conf里找到KeepAive配置项,果断设置为On,MaxKeepAliveRequests果断为0(一个持久tcp最多允许的请求数,如果过小,很容易在tcp未过期的情况下,达到最大连接,那下次连接就又是新的tcp连接了,这里设置0表示不限制),然后对于mysql_pconnect最重要的选项KeepAliveTimeout设置为15(表示15秒).   好了,重启apache,测试一下,赶紧写行东西 <?php echo "Apache进程号:".getmypid(); ?> 很简单,获取当前php执行者(apache)的进程号,用浏览器浏览这个页面,看到什么?对,有看到一串进程号数字,15秒内,连续刷新页面,看看进程号有无变化?木有吧?现在把手拿开,交叉在胸前,度好时间,1秒,2秒,3,…15,16。好,过了15秒了,再去刷新页面,进程号有没有变化?变了!又是一个新的apache进程了,为什么15秒后就变成新的进程了?记得我们在apache里设置的KeepAliveTimeout吗?它的值就是15秒.现在我们应该大致清楚了,在web服务器默认打开KeepAlive的情况下,客户端第一次http成功请求后,apache不会立刻断开socket,而是一直监听来自这一客户端的请求,监听多久?根据KeepAliveTimeout选项配置的时间决定,一旦超过这一时间,apache就会断开socket了,那么下次同一客户端再次请求,apache就会新开一个进程来相应。所以我们之前15内不停的刷新页面,看到的进程号都是一致的,表明是浏览器请求给了同一个apache进程。   浏览器是怎么知道不需要重新进行tcp连接就可以直接发送http请求呢?因为http返回头里就会带上Connection:keep-alive,Keep-alive:15两行,意思就是让客户端浏览器明白,这次socket连接我这边还没关闭呢,你可以在15内继续使用这个连接,并发送http请求,于是乎浏览器就知道应该怎么做了.   php怎么做   那么,php的mysql连接资源是怎么被hold住的呢,这需要查看php的mysql_pconnect的函数代码,我看了下,大概的做法就是根据当前apache进程号,生成hash key,找hash表内有无对应的连接资源,没有则推入hash表,有则直接使用。有些代码片段可以说明(具体可查看php5.3.8源码ext/mysql/php_mysql.c文件690行php_mysql_do_connect函数) #1.生成hash key user=php_get_current_user();//获取当前php执行者(apache)的进程唯一标识号 hashed_details_length = spprintf(&hashed_details, 0, "mysql__%s_", user);//hashed_details就是hash key #2.如果未找到已有资源,就推入hash表,名字叫persistent_list,如果找到就直接使用 /*...

    继续阅读...

  • 服务器用的centOS,平时用SSH管理。在命令行下目录用蓝色显示,很难看清。 GOOGLE了一下,原来很多人跟我一样有同感。 其实修改起来挺简单(虽然效果还是很丑…但至少看起来没那么累了) 1.cp /etc/DIR_COLORS $HOME/.dir_colors (很多人是直接改DIR_COLORS,但这样是没有用的) 1. vim $HOME/.dir_colors 2. 找到 DIR 01;34,修改为DIR 01;37;44,即白字蓝底,保存退出 3. reboot重启,或用eval `dircolors $HOME/DIR_COLORS`(`是键盘右上角ESC下面的键),重新载入设置,就可以ls查看到效果了 有关/etc/DIR_COLORS的详情配置,可以到这里查看http://linux.chinaunix.net/techdoc/system/2008/12/29/1055585.shtml

    linux控制台命令行ls显示文件颜色修改

    服务器用的centOS,平时用SSH管理。在命令行下目录用蓝色显示,很难看清。 GOOGLE了一下,原来很多人跟我一样有同感。 其实修改起来挺简单(虽然效果还是很丑…但至少看起来没那么累了) 1.cp /etc/DIR_COLORS $HOME/.dir_colors (很多人是直接改DIR_COLORS,但这样是没有用的) 1. vim $HOME/.dir_colors 2. 找到 DIR 01;34,修改为DIR 01;37;44,即白字蓝底,保存退出 3. reboot重启,或用eval `dircolors $HOME/DIR_COLORS`(`是键盘右上角ESC下面的键),重新载入设置,就可以ls查看到效果了 有关/etc/DIR_COLORS的详情配置,可以到这里查看http://linux.chinaunix.net/techdoc/system/2008/12/29/1055585.shtml

    继续阅读...

  • 在寻求ubuntu下Firefox翻墙时发现,原来在linux下翻墙是如此的容易! 本文面向的用户:使用Ubuntu作为操作系统并且使用Firefox作为常用浏览器,且有SSH账号的同学! 一、在终端中配置SSH 假设你的帐号为:enjoyphp ||服务器地址为:enjoyphp.com ||密码为:123456 打开终端:应用程序-附件-终端 在终端中输入:sudo ssh -qTfnN -D 7070 enjoyphp@enjoyphp.com 稍后会出现提示: Are you sure you want to continue connecting (yes/no)? 输入:yes (注意,单单输入 y 是不行地~) 然后提示输入密码: enjoyphp@enjoyphp.com’s password: 输入:123456 第三步:配置Firefox浏览器 假设你正使用Firefox浏览器阅读本文。...

    Ubuntu下通过SSH翻墙

    在寻求ubuntu下Firefox翻墙时发现,原来在linux下翻墙是如此的容易! 本文面向的用户:使用Ubuntu作为操作系统并且使用Firefox作为常用浏览器,且有SSH账号的同学! 一、在终端中配置SSH 假设你的帐号为:enjoyphp ||服务器地址为:enjoyphp.com ||密码为:123456 打开终端:应用程序-附件-终端 在终端中输入:sudo ssh -qTfnN -D 7070 enjoyphp@enjoyphp.com 稍后会出现提示: Are you sure you want to continue connecting (yes/no)? 输入:yes (注意,单单输入 y 是不行地~) 然后提示输入密码: enjoyphp@enjoyphp.com’s password: 输入:123456 第三步:配置Firefox浏览器 假设你正使用Firefox浏览器阅读本文。...

    继续阅读...

  • 大多人浏览网页如果超过3秒打不开就会离开,Google为此推出了一款apache加速模块,可以有效将网页加载速度提高50%. 网页提速的问题是一个复杂多样的问题,有很多解决方法,往往关系到网站系统程序,服务器硬件,网络传输速度等方面,而Google这款加速模块简单的解决了许多复情况的问题: •如果你的网站采用apache构建服务器,不需要对网站CMS系统进行处理即可应用 •加速模块可以自行对网络传输的html字节优化及对图象,css进入压缩优化传输 •智能缓存是一大亮点,它可以自动智能缓存,加速下载 下面介绍一下所有特点功能 优化缓存 •缓存扩展 •压缩处理CSS •优化javascript最大限度的减少重复请求 •自动缓存CSS •JavaScript内嵌技术 有效载荷尺寸最小化 •压缩空白 •合并头信息 •附加属性 •内建核心Javascript •优化图像下载 •跳地非法字符 •重写优化CSS 访问:mod_pagespeed

    Google推出apache加速模块mod_pagespeed

    大多人浏览网页如果超过3秒打不开就会离开,Google为此推出了一款apache加速模块,可以有效将网页加载速度提高50%. 网页提速的问题是一个复杂多样的问题,有很多解决方法,往往关系到网站系统程序,服务器硬件,网络传输速度等方面,而Google这款加速模块简单的解决了许多复情况的问题: •如果你的网站采用apache构建服务器,不需要对网站CMS系统进行处理即可应用 •加速模块可以自行对网络传输的html字节优化及对图象,css进入压缩优化传输 •智能缓存是一大亮点,它可以自动智能缓存,加速下载 下面介绍一下所有特点功能 优化缓存 •缓存扩展 •压缩处理CSS •优化javascript最大限度的减少重复请求 •自动缓存CSS •JavaScript内嵌技术 有效载荷尺寸最小化 •压缩空白 •合并头信息 •附加属性 •内建核心Javascript •优化图像下载 •跳地非法字符 •重写优化CSS 访问:mod_pagespeed

    继续阅读...

  • 这个。。虽说是出了新版本,但让我挺郁闷。好不容易把centos5.4下载下来,并配置好了,也就是在我刚配置好的一霎那..看到官方推出了centos5.5版。这也太巧了。 不过总归是很期待这个版本的,RHEL 5.5在3月底就发布了,所以一直想着centos能紧跟,现在过去一个半月发布,也还算是跟得挺紧的。 mirrors.163.com已经有了5.5的更新了,需要的朋友可以直接去下了:http://mirrors.163.com/centos/5.5/isos/ 该版本基于 Red Hat Enterprise Linux 5.5,“是 CentOS 5 发行系列的第五次更新。它包含了很多错误修正、升级和新功能”。 有关 CentOS 5.5 的变化详情,可查阅其发 布公告及发 行注记。

    CentOS 5.5 发布

    这个。。虽说是出了新版本,但让我挺郁闷。好不容易把centos5.4下载下来,并配置好了,也就是在我刚配置好的一霎那..看到官方推出了centos5.5版。这也太巧了。 不过总归是很期待这个版本的,RHEL 5.5在3月底就发布了,所以一直想着centos能紧跟,现在过去一个半月发布,也还算是跟得挺紧的。 mirrors.163.com已经有了5.5的更新了,需要的朋友可以直接去下了:http://mirrors.163.com/centos/5.5/isos/ 该版本基于 Red Hat Enterprise Linux 5.5,“是 CentOS 5 发行系列的第五次更新。它包含了很多错误修正、升级和新功能”。 有关 CentOS 5.5 的变化详情,可查阅其发 布公告及发 行注记。

    继续阅读...

Page 1 of 41234