您的位置: 首页 - 记录生活,记录点滴~

经典论坛上看到的一个CSS后台菜单效果,记录打开状态.

分类: 学习 发布: Slleo 浏览: 日期: 2006年9月22日

如题,效果图如下:

一段让title变动的js代码

分类: 学习 发布: Slleo 浏览: 日期: 2006年9月22日


在经典论坛上看到的,取来保存,以便后用.

[code]








[/code]


关于域名的相关资料

分类: 生活点滴 发布: Slleo 浏览: 日期: 2006年9月22日

一、名词解释: 域名解析 A记录 MX记录 CNAME记录 TTL
1、什么是域名解析?
域名解析就是国际域名或者国内域名以及中文域名等域名申请后做的到IP地址的转换过程。IP地址是网路上标识您站点的数字地址,为了简单好记,采用域名来代替ip地址标识站点地址。域名的解析工作由DNS服务器完成。

2、什么是A记录?
A (Address) 记录是用来指定主机名(或域名)对应的IP地址记录。用户可以将该域名下的网站服务器指向到自己的web server上。同时也可以设置您域名的二级域名。

3、什么是MX记录?
邮件路由记录,用户可以将该域名下的邮件服务器指向到自己的mail server上,然后即可自行操控所有的邮箱设置。您只需在线填写您服务器的IP地址,即可将您域名下的邮件全部转到您自己设定相应的邮件服务器上。

4、什么是CNAME记录?
即:别名记录。这种记录允许您将多个名字映射到同一台计算机。 通常用于同时提供WWW和MAIL服务的计算机。例如,有一台计算机名为“host.mydomain.com”(A记录)。 它同时提供WWW和MAIL服务,为了便于用户访问服务。可以为该计算机设置两个别名(CNAME):WWW和MAIL。 这两个别名的全称就http://www.mydomain.com/和“mail.mydomain.com”。实际上他们都指向“host.mydomain.com”。


5、什么是TTL值?
TTL值全称是“生存时间(Time To Live)”,简单的说它表示DNS记录在DNS服务器上缓存时间。要理解TTL值,请先看下面的一个例子:
假设,有这样一个域名myhost.abc.com(其实,这就是一条DNS记录,通常表示在abc.com域中有一台名为myhost的主机)对应IP地址为1.1.1.1,它的TTL为10分钟。这个域名或称这条记录存储在一台名为dns.abc.com的DNS服务器上。


二、现在有一个用户在浏览器中键入一下地址(又称URL):http://myhost.abc.com/ 这时会发生什么呢?

该访问者指定的DNS服务器(或是他的ISP,互联网服务商, 动态分配给他的)8.8.8.8就会试图为他解释myhost.abc.com,当然8.8.8.8这台DNS服务器由于没有包含myhost.abc.com这条信息,因此无法立即解析,但是通过全球DNS的递归查询后,最终定位到dns.abc.com这台DNS服务器,dns.abc.com这台DNS服务器将myhost.abc.com对应的IP地址

1.1.1.1告诉8.8.8.8这台DNS服务器,然有再由8.8.8.8告诉用户结果。8.8.8.8为了以后加快对myhost.abc.com这条记录的解析,就将刚才的1.1.1.1结果保留一段时间,这就是TTL时间,在这段时间内如果用户又有对myhost.abc.com这条记录的解析请求,它就直接告诉用户1.1.1.1,当

TTL到期则又会重复上面的过程。


三、为什么我做的解析没有生效?
以下的每种原因都有可能导致您的解析无法生效。
1、域名的DNS没有按要求设置成正确的DNS. 要是使您的解析设置, 域名的DNS必须是ns1.dns-diy.com & ns2.dns-diy.com, 或者是其他已 经指向到这两个DNS的DNS.
2、域名还没设置相应的解析记录.

四、怎样检查域名的DNS是否已经设置为有效的DNS服务器?
您可以在域名管理区的操作平台页面的右边区域,来检查DNS是否设置正确。
如果您要修改域名的DNS需要到注册商的域名管理界面操作。

五、已经在注册商修改了DNS,为什么DNS检查的还是旧的DNS?
我们的DNS检查是根据DNS的根服务器的当前数据为依据的,在注册商修改DNS可能需要12-72小时才能反映在根服务器上。域名解析是否能生效,以我们的DNS检查为准。

六、解析可以生效,为什么收不到邮件?

请检查您的MX记录是否设置正确;
请检查您的邮局服务器是否设置正确。
如果您没有自己的邮件服务器,可以使用我们的邮件转发。

七、设置了MX记录,为什么无效?
大多数SMTP要求MX记录指向一个主机名。因此请将MX记录指定到一个主机名,而不是IP地址。
举例,要让218.5.1.249做为whatis.cn的邮件服务器可以这样设置,

1、将mail.whatis.cn解析到218.5.1.249 (“主机名”栏填“mail”,“类型”选择“A”,“IP地址/主机名”栏填“218.5.1.249”,然

后按“增加”)
2、whatis.cn的MX记录设置为mail (“主机名”栏保留为空,“类型”选择“MX”,“IP地址/主机名”栏填“mail”,然后按“增加”)
3、在218.5.1.249上进行设置,允许接收@whatis.cn的邮件

如果您在上述第二步中的“主机名”栏中填写了“mail”,则表示发到@mail.whatis.cn的邮件由218.5.1.249接收,这可能不符合你的本意思

八、为什么有的主机名用“.”结尾,而有的没有?这有什么不同吗?
以“.”结尾的主机名表示主机名的全称(FQDN);而不是用“.”结尾的主机名表示在该域名下的主机名。
举例: 1、在whatis.cn域下加了个CNAME类型的记录“abc”指到“123”,那么abc.whatis.cn表示123.whatis.cn的解析。
2、在whatis.cn域下加了个CNAME类型的记录“abc”指到“onlinenic.com.”,那么abc.whatis.cn表示用onlinenic.com的解析。

九、为什么“优先级”设置总是为“0”?
“优先级”仅对MX记录有效,其他类型的记录将忽略优先级。

十、可以做泛解析吗?
可以。 请在“主机名”栏中填“*”。

十一、DNS修改和域名解析有什么不同吗?
DNS修改和域名解析的含义完全不同:
  
   1、 DNS修改是指域名解析服务器(Domain Name System)的修改。
   如果您自己有独立DNS服务器,想通过此DNS解析己注册成功的域名,您可选择DNS修改业务(注:要改DNS的域名必须是在我公司注册或己成功转入至我公司的域名)。请您登陆域名管理区-点击相应域名-DNS修改处修改您的域名DNS信息
  
   2、 域名解析:域名与IP地址之间是一一对应的,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器(DNS)来完成。
   如您的主机及域名均成功,则需做解析,如果您的域名DNS是第一主机默认的DNS,请您登陆域名管理区-点击相应域名-域名解析处修改您的域名解析即可。如果您的域名DNS不是第一主机的解析服务器,请您与DNS所在服务商联系解析事宜。
  
十二、英文域名修改DNS是否收费?
国际英文域名、国内英文域名可以修改DNS,这项服务是免费的。

十三、URL转发隐藏路径和不隐藏路径有何区别?
不隐藏路径URL转发:例如:http://b.com/指向http://a.com/xxx/(任意目录);在浏览器地址栏中打入http://b.com/连接后地址栏会显示真正的地址http://a.com/xxx/
 隐藏路径的URL转发:例如:http://b.com/指向http://a.com/xxx/(任意目录);在浏览器地址栏中打入http://b.com/连接后地址栏显示的还是http://b.com/,但实际指向的是http://a.com/xxx/的内容 。

Robots.txt详解

分类: 学习 发布: Slleo 浏览: 日期: 2006年9月22日

当搜索引擎访问一个网站时,它首先会检查该网站的根域下是否有一个叫做robots.txt的纯文本文件。Robots.txt文件用于限定搜索引擎对其网站的访问范围,即告诉搜索引擎网站中哪些文件是允许它进行检索(下载)的。这就是大家在网络上常看到的“拒绝Robots访问标准”(Robots Exclusion Standard)。下面我们简称RES。
Robots.txt文件的格式:
  Robots.txt文件的格式比较特殊,它由记录组成。这些记录通过空行分开。其中每条记录均由两个域组成:
  1) 一个User-Agent(用户代理)字符串行;
  2) 若干Disallow字符串行。
  记录格式为: ":"
  下面我们分别对这两个域做进一步说明。
User-agent(用户代理):
  User-agent行(用户代理行) 用于指定搜索引擎robot的名字,以Google的检索程序Googlebot为例,有:User-agent: Googlebot
  一个robots.txt中至少要有一条User-agent记录。如果有多条User-agent记录,则说明有多个robot会受到RES标准的限制。当然了,如果要指定所有的robot,只需用一个通配符"*"就搞定了,即:User-agent: *
Disallow(拒绝访问声明):
  在Robots.txt文件中,每条记录的第二个域是Disallow:指令行。这些Disallow行声明了该网站中不希望被访问的文件和(或)目录。例如"Disallow: email.htm"对文件的访问进行了声明,禁止Spiders下载网站上的email.htm文件。而"Disallow: /cgi-bin/"则对cgi-bin目录的访问进行了声明,拒绝Spiders进入该目录及其子目录。Disallow声明行还具有通配符功能。例如上例中"Disallow: /cgi-bin/"声明了拒绝搜索引擎对cgi-bin目录及其子目录的访问,而"Disallow:/bob"则拒绝搜索引擎对/bob.html和/bob/indes.html的访问(即无论是名为bob的文件还是名为bob的目录下的文件都不允许搜索引擎访问)。Disallow记录如果留空,则说明该网站的所有部分都向搜索引擎开放。
空格 & 注释


  在robots.txt文件中,凡以"#"开头的行,均被视为注解内容,这和UNIX中的惯例是一样的。但大家需要注意两个问题:
  1) RES标准允许将注解内容放在指示行的末尾,但这种格式并不是所有的Spiders都能够支持。譬如,并不是所有的Spiders都能够正确理解"Disallow: bob #comment"这样一条指令。有的Spiders就会误解为Disallow的是"bob#comment"。最好的办法是使注解自成一行。
  2) RES标准允许在一个指令行的开头存在空格,象"Disallow: bob #comment",但我们也并不建议大家这么做。


Robots.txt文件的创建:
  需要注意的是,应当在UNIX命令行终端模式下创建Robots.txt纯文本文件。好的文本编辑器一般都能够提供UNIX模式功能,或者你的FTP客户端软件也“应该”能够替你转换过来。如果你试图用一个没有提供文本编辑模式的HTML编辑器来生成你的robots.txt纯文本文件,那你可就是瞎子打蚊子——白费力气了。
对RES标准的扩展:
  尽管已经提出了一些扩展标准,如Allow行或Robot版本控制(例如应该忽略大小写和版本号),但尚未得到RES工作组的正式批准认可。
附录I. Robots.txt用法举例:
  使用通配符"*",可设置对所有robot的访问权限。
  User-agent: *
  Disallow:
  表明:允许所有搜索引擎访问网站下的所有内容。
  User-agent: *
  Disallow: /
  表明:禁止所有搜索引擎对网站下所有网页的访问。
  User-agent: *
  Disallow: /cgi-bin/Disallow: /images/
  表明:禁止所有搜索引擎进入网站的cgi-bin和images目录及其下所有子目录。需要注意的是对每一个目录必须分开声明。
  User-agent: Roverdog
  Disallow: /
  表明:禁止Roverdog访问网站上的任何文件。
  User-agent: Googlebot
Disallow: cheese.htm
  表明:禁止Google的Googlebot访问其网站下的cheese.htm文件。
  上面介绍了一些简单的设置,对于比较复杂的设置,可参看一些大型站点如CNN或Looksmart的robots.txt文件(www.cnn.com/robots.txt, www.looksmart.com/robots.txt)
附录II. 相关robots.txt文章参考:
  1. Robots.txt常见问题解析
  2. Robots Meta Tag的使用
  3. Robots.txt检测程序
Robots.txt常见问题解析:
  我们开发了一个针对robots.txt文件的“验检程序”,同时又设计了一个搜索程序,专门下载robots.txt文件,以此对新推出的这个“robots.txt验检程序”进行测试。在对DMOZ(ODP)中所链接的站点进行遍历,共计检索240万个站点后,我们总共找到了大概75k的robots.txt文件。
  在这些robots.txt文件中,我们发现了大量的而且是形形色色的问题。有超过5%的robots.txt文件使用了错误格式,有超过2%的文件由于使用的是极其拙劣的格式而导致无法为任何SPIDER读取。我们将发现的一些问题在下面列出来供大家参考借鉴:
错误1—语法混用
  例如:
  User-agent: *
  Disallow: scooter
  正确语法应为:
  User-agent: scooter
  Disallow: *
错误2—一行Disallow声明多个目录
  这是一个比较常见的错误。我们发现很多网站在其robots.txt中,在一个Disallow指令行中放入了多个目录。譬如:Disallow: /css/ /cgi-bin/images/
绝大多数的spiders对上述声明行都无法做出正确的解析,有些Spiders会忽略其空格而解析为/css//cgi-bin//images/,或只解析/images/或/css/,或者根本不予解析。
正确的语法应为:
  Disallow: /css/
  Disallow: /cgi-bin/
  Disallow: /images/
错误3—在DOS模式下编辑robots.txt文件
  这也是一个比较常见的错误。正确的做法应该是在UNIX模式下编辑你的robots.txt文件并以ASCII码格式上传。显然并非所有的FTP客户端软件都能够天衣无缝地将文件格式转换为UNIX命令行终端,所以在编辑robots.txt文件时,一定要确保你的文本编辑器是在UNIX模式下。
错误4—在指示行末尾加注
  在robots.txt文件中,凡以"#"开头的行,均被视为注解内容,这和UNIX中的惯例是一样的。例如:Disallow: /cgi-bin/ # this bans robots from our cgi-bin
  虽然根据RES标准,在指示行的末尾加注是可行的,但这种格式在过去却并非所有的Spiders都能够支持,有些Spiders干脆就把整个句子视为注解内容直接跳过去不读。当然我们知道现如今搜索引擎基本上都能够支持这种格式,不过—仍有可能无法被某些搜索引擎正确解读,你冒得起这个险吗?我们建议在编辑robots.txt文件时,最好让注解自成一行。
错误5—指令行前有空格
  例如"Disallow: /cgi-bin/",虽然RES标准并未对这种格式予以特别说明,但我们对这种格式是持极力反对态度的。同样的问题摆在你面前你冒得起无法被Spiders正确解读的险吗?
错误6--404重定向至另一页面
  一般没有robots.txt的网站会将对robots.txt文件的调用请求转至另一页面。这种重定向通常不会产生服务器状态错误或重定向状态信息。然而因为是Spiders自己决定它看到的是robots.txt文件还是一个.html文件。虽然理论上应该不会有什么问题,不过为了保险起见,不妨在你服务器的顶级目录下放一个空的robots.txt文件。在www.google.com/bot.html下,也提供了相同的建议—“如欲避免网络服务器日志中的出错信息‘找不到文件’,可在其根域下创建一个空的robots.txt文件。”
错误7—声明自相矛盾
  例如:
  USER-AGENT: EXCITE
  DISALLOW:
  虽然RES标准忽略大小写(Case Sensitive),但目录和文件名却是大小写敏感的。所以对于"USER-AGENT"和"DISALLOW"指令,用大小写都是可以的。但对于所声明的目录或文件名却一定要注意大小写的问题。
错误8—列出所有文件
  这也是一种常见错误,不厌其烦地将目录下文件全数列出。例如:
  Disallow: /AL/Alabama.html
  Disallow: /AL/AR.html
  Disallow: /Az/AZ.html
  Disallow: /Az/bali.html
  Disallow: /Az/bed-breakfast.html
  其实,上面这么多声明行只需用目录选项来替代:
  Disallow: /AL
  Disallow: /Az
  需要注意的是:反斜杠"/"表示禁止搜索引擎进入该目录。如果只有几十个文件需要设置访问权限,那倒也无可厚非。问题是我们发现有一个robots.txt文件中列出了有400k,多达4,000个文件。我们只是纳闷看到这么多声明,有多少Spiders会掉头而去。
错误9—自创ALLOW指令
  没有ALLOW指令,只有DISALLOW指令!我们发现有这样的用法:
  User-agent: Spot
  Disallow: /john/
  allow: /jane/
  正确写法应为:
  User-agent: Spot
  Disallow: /john/
  Disallow:
错误10—对声明的目录无反斜杠标识
  例如我们发现有这样的例子:
  User-agent: Spot
  Disallow: john
  对这样的记录Spider该怎么反应?按照RES标准,Spider会将名为"john"的文件和名为"john"的目录都DISALLOW。所以要记得使用"/"来标识所声明的路径(目录)。
  我们还发现,有些网站的优化工作做得真彻底,竟然在其robots.txt中也放了关键词(费解,不明白他们怎么想的)。这些人一定是把他们的robots.txt纯文本文件当作是html文件了。(要记住:在FrontPage下是不可能正确创建robots.txt文件的)
错误11—网络服务器端的错误配置
  为什么对robots.txt文件的调用请求会产生一个二进制文件?只有网络服务器或FTP客户端软件错误设置的情况下才可能发生这种错误。建议大家定期检查自己的robots.txt文件
服务器/域名“农场”
  搜索引擎检测服务器或域名“农场”(即包含巨量站点)的一个简单途径是看它们的robots.txt。我们发现规模在400到500个域名的大型域名“农场”,其“库”内站点使用都是同一个robots.txt文件。这也就相当于告诉搜索引擎这些使用同一robots.txt文件的站点是相关联的。
Google率先支持通配符:
  Google是第一家能够支持robots.txt中通配符文件扩展名的搜索引擎。例如:
  User-agent: googlebot
  Disallow: *.cgi
  不过注意了,由于目前只有Google能够支持这种格式,所以”USER-AGENT”只能是“Googlebot”。




雅虎收录网站常见问题

怎样能够减少雅虎搜索引擎对我的站点发出的请求?
由于我们从整个因特网上抓取数以十亿计的网页,对于网络抓取我们采取大量系统,因此,您的网络服务器会从不同的YST抓取程序的客户端IP地址登录请求。不同的抓取程序系统彼此配合,来限制任何来自单一网络服务器的活动。所谓单一网络服务器,是由IP地址判断的。因此,如果您的服务器主机拥有多个IP,它的活动则会处于更高的级别。
在robots.txt 里,YST有一个特定的扩展名,可以通过它对我们的抓取程序设定一个较低的抓取请求频率。
您可以加入Cral-delay:xx指示,其中,“XX”是指在crawler程序两次进入站点时,以秒为单位的最低延时。如果crawler频率对您的服务器是一个负担,您可以将这个延时设定为任何您认为恰当的数字,例如60或300。
例如,您想设定一个20秒的延时,语句如下:
User-agent: Slurp
Crawl-delay: 20

如何使雅虎只索引某些网页?
雅虎的YST搜索引擎遵守noindex(不做索引)的meta-tag。您可以在web文档的上部写入:

这时,YST 会追踪这个文档,但不会索引,也不会将其收入搜索引擎的数据库。

怎样能够减少雅虎搜索引擎对我的站点发出的请求?
由于我们从整个因特网上抓取数以十亿计的网页,对于网络抓取我们采取大量系统,因此,您的网络服务器会从不同的YST抓取程序的客户端IP地址登录请求。不同的抓取程序系统彼此配合,来限制任何来自单一网络服务器的活动。所谓单一网络服务器,是由IP地址判断的。因此,如果您的服务器主机拥有多个IP,它的活动则会处于更高的级别。
在robots.txt 里,YST有一个特定的扩展名,可以通过它对我们的抓取程序设定一个较低的抓取请求频率。
您可以加入Cral-delay:xx指示,其中,“XX”是指在crawler程序两次进入站点时,以秒为单位的最低延时。如果crawler频率对您的服务器是一个负担,您可以将这个延时设定为任何您认为恰当的数字,例如60或300。
例如,您想设定一个20秒的延时,语句如下:
User-agent: Slurp
Crawl-delay: 20

这个网页抓取程序是如何发现我的网站上的文件?
YST搜索程序跟踪HREF链接,而并不跟踪SRC链接。这意味着,我们的程序不会通过SRC指向的链接去追溯或索引这些框架文件。

我的网站不想出现在雅虎的搜索结果中,如何删除?
如果您需要删除雅虎网页结果中的您自己整个网站或部份网页的记录,可以在您服务器的根目录中放置一个 robots.txt 文件,其内容如下:
User-Agent: *
Disallow: /
这是大部份网络搜索程序都会遵守的标准协议,加入这些协议后,它们将不会再抓取您的网络服务器或目录。有关 robots.txt 文件的详细信息,请访问:
http://www.robotstxt.org/wc/norobots.html
只要您网络服务器的根目录中有这个 robots.txt 文件,YST 搜索程序就不会进入您的网站,您的网站也不会出现在雅虎的搜索结果中。
如果您的情况非常紧急,不能等到我们的 YST 搜索程序下次抓取您的网站时再进行删除,您可以反馈给我们,会有专人负责处理。

我可以只删除个别的网页吗?
如果只需要保护个别网页,不想让搜索引擎显示这几个页面,可在那一页加入以下 HTML 代码:

有关这个标准 meta 标签的详细信息,请访问:http://www.robotstxt.org/wc/exclusion.html#meta
如果您的情况非常紧急,不能等到 YST 搜索程序下次抓取您的网站时再进行删除,请您可以反馈给我们,会有专人负责处理。

雅虎收录的网页涉及个人隐私或企业机密,请问如何将这些网页尽快删除?
雅虎与这些网站无关,同时雅虎也无权删除他人网站上的网页。雅虎搜索遵循客观、公正的原则。 如果您认为,在搜索结果中,他人网站上含有对您或您公司的侵权信息,并希望该信息从雅虎搜索结果中消失,请先联系这些网站管理员,只要这些网站删除内容后,这些信息会在几天或几周内从雅虎搜索结果中自动消失。如果您希望该网页信息从雅虎搜索结果中尽快消失,请先确认已联系该网站管理员删除指定网页,然后提供身份证明、网站权属证明及详细侵权情况资料,通过传真或邮件的方式提供给雅虎,雅虎在收到上述法律文件后,将会为您尽快移除被控侵权的网页。

雅虎的抓取程序能够跟踪动态链接吗?
YST 搜索程序支持网页框架,并努力抓取复杂的网页,例如通过表单生成的页面、内容生成系统(content generation systems)以及动态页面生成软件。
YST搜索程序争取抓到更多不需经过网站管理员专门支持的网页,但现实中仍然还有很多网站无法被机器搜索到,无论是通过雅虎还是其他同样强大的搜索系统。

雅虎是如何抓取我的网站的?
雅虎应用雅虎搜索引擎技术(Yahoo! Search Engine Technology,简称YST),它是一套基于算法的Web索引抓取程序,能够自动探测网络内容。YST 这套机器搜索程序从因特网上采集文档,建立起一个可搜索的索引系统。这些文件(即您的网站文件)能被YST程序发现和抓取的主要原因是,在因特网其他的网页上包含有这些文档的直接链接。
YST 搜索程序严格遵守robots.txt标准执行抓取,因此,对于那些您不希望被雅虎搜索引擎返回的结果,搜索程序不会执行抓取。任何被robots.txt标准认为不适宜抓取的文件,既不会被包括在抓取文档中,也不会进入到搜索引擎的数据库。

PHP一些有意思的小区别

分类: 学习 发布: Slleo 浏览: 日期: 2006年9月22日

单引号'和双引号"的区别:
首先是单引号要比双引号执行效率要高,因为双引号会对内容进行预处理。
例如:'$value' 输出字符 $value ; "$value"输出变量$value的值。

char和varchar的区别:
char是定长而varchar是变长,char的主要特点是存储方式预分配,varchar当它的数据长度发生变化时会影响其存储的页分配。
char与varchar2是一对矛盾的统一体,两者是互补的关系.
varchar2比char节省空间,在效率上比 char会稍微差一些,即要想获得效率,就必须牺牲一定的空间,这也就是我们在数据库设计上常说的‘以空间换效率'。
varchar2 虽然比 char节省空间,但是如果一个varchar2列经常被修改,而且每次被修改的数据的长度不同,这会引起‘行迁移'(Row Migration)现象,而这造成多余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用 char代替varchar2会更好一些。

mysql_connect和mysql_pconnect的区别
引用exceed php club论坛上的朋友原话:
php中mysql_pconnect()的实现方式:
其实mysql_pconnect()本身并没有做太多的处理, 它唯一做的只是在php运行结束后不主动close掉mysql的连接.
mysql_pconnect()与此同时mysql_connect()的区别:
cgi方式下:
在php经cgi方式运行时pconnect和connect是基本没有区别的, 因为cgi方式是每一个php访问起一个进程, 访问结束后进程也就结束了, 资源也全释放了.
apache模块方式下:
区别在于当php以apache模块方式运行时, 由于apache有使用进程池, 一个httpd进程结束后会被放回进程池, 这也就使得用pconnect打开的的那个mysql连接资源不被释放, 于是有下一个连接请求时就可以被复用.
这就使得在apache并发访问量不大的时候, 由于使用了pconnect, php节省了反复连接db的时间, 使得访问速度加快. 这应该是比较好理解的.
但是在apache并发访问量大的时候, 如果使用pconnect, 会由于之前的一些httpd进程占用的mysql连接没有close, 则可能会因为mysql已经达到最大连接着, 使得之后的一些请求永远得不到满足.
例如:
若mysql最大连接数设为500, 而apache的最大同时访问数设为2000
假设所有访问都会要求访问db, 而且操作时间会比较长
当前500个请求的httpd都没有结束的时候...之后的httd进程都是无法连接到mysql的(因已经达到mysql最大连接数). 只有当前500个httpd进程结束或被复用才可以连接得到了mysql.
其实这个也很好解释了xgy_p的测试中若操作比较简单, pconnect比connect效率高很多, 而且跟使用jsp的连接池的速度比较接近. 因为这个时候httpd进程可以不断的给复用.
而 当DB操作复杂, 耗时较长时, 因httpd会fork很多并发进程处理, 而先产生的httpd进程不释放db连接, 使得后产生的httpd进程无法连上db. 因为这样没有复用其它httpd进程的mysql连接. 于是会就产生很多连接超时, 像一开始的1000个并发连接测试说几乎都是连接超时就是这个原因.
---
(反进来看jsp用的如果是纯粹的db连接池, 则不会有因为达到mysql连接上限而连不上的问题, 因为jsp的连接池会使得可以等待其它连接使用完毕并复用. )
因此在并发访问量不高时,使用pconnect可以简单提高访问速度, 但在并发量增大后, 是否再使用pconnect就要看程序员的选择了..
就我个人认为, php现在对mysql的连接并没有真正用到连接池, pconnect也只是相当于借了apache的进程池来用, 所以在并发访问量大的时候pconnect并不能很好的提高访问DB效率. 在这一点上. php的确比不上jsp.
就目前的这种情况, 如果并发量大的话, 我个人建议最好还用mysql_connect.

include和require的区别
以下取自phpchina.cn
php的require()性能与include()相类似。不同之处在于,对include()来说,在include()执行时文件每次都要进行读 取和评估;而对于require()来说,文件只处理一次(实际上,文件内容替换了require()语句)。这就意味着如果有包含这些指令之一的代码和 可能执行多次的代码,则使用require()效率比较高。另一方面,如果每次执行代码时相读取不同的文件,或者有通过一组文件叠代的循环,就使用 include(),因为可以给想要包括的文件名设置一个变量,当参数为include()时使用这个变量。

include 在执行时,如果 include 进来的文件发生错误的话,不会立刻停止;而 require 则会立刻终止程序,不再往下执行。
include 可以用在循环; require 不行。

以下取自ricky
1,require是无条件包含也就是如果一个流程里加入require,无论条件成立与否都会先执行require
这个已经不适用了,因为require 可以包含变量指向的文件如

if($a = 1){
$file = '1.php';
}else{
$file = '2.php';
}
require($file);

2,包含文件不存在或者语法错误的时候require是致命的, include不是

3,include有返回值,而require没有(可能因为如此require的速度比include快)
$login = include('test.php');
if(!empty($login)){
echo "文件包含成功";
}else{
echo "文件包含失败";
}

引用文件的方法有两种:require 及 include。两种方式提供不同的使用弹性。

require 的使用方法如 require("MyRequireFile.php"); 。这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。

include 使用方法如 include("MyIncludeFile.php"); 。这个函数一般是放在流程控制的处理部分中。PHP 程序网页在读到 include 的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化。

isset()和empty()的区别
两者都是测试变量用的,但是isset()是测试变量是否被赋值,而empty()是测试一个已经被赋值的变量是否为空。

如果一个变量没被赋值就引用在php里是被允许的,但会有notice提示,如果一个变量被赋空值,$foo=""或者$foo=0或者 $foo=false,那么empty($foo)返回真,isset($foo)也返回真,就是说赋空值不会注销一个变量。
 
要注销一个变量,可以用 unset($foo)或者$foo=NULL

分页:[«][9][10][11][12][13][14][15][16][17][18][19][20][21][22]23[»]

Powered By Z-Blog 1.8 Walle Build 100427

Copyright © Slleo.com. Some Rights Reserved.