首页 > 编程技术 > php

Web服务器的趋势

发布时间:2016-11-25 17:14

(作者:曹文龙、李维森)
  目前,Web服务器的发展有三个主要趋势:
  1.从HTML到XML(Extensible Markup Language-可扩展标记语言)
  HTML被称为“第一代Web语言”,如前面的介绍,HTML作为Web的开发语言,对Web应用的发展起到了关键性的作用。但是HTML有一个致命的缺点:只适合于人与计算机的交流,不适合计算机与计算机的交流。HTML通过大量的标记来定义文档内容的表现方式,它仅仅描述了应如何在Web浏览器页面上布置文字、图形,并没有对Internet的信息含义本身进行描述,而信息又是Web应用中最重要的内容。通过HTML表现出来的文字、图形内容很容易被人理解,但却不利于计算机程序去理解。另外,HTML的另一个问题就是它的标记集合是固定的,用户不能根据自己的需要增加标记;而且各种浏览器的规格不尽相同,要使我们用HTML做的网页能够被所有浏览器正常显示,我们只能够使用W3C(万维网协会)规定的标记来创建网页。
  正如前面所说,Web服务器向Web浏览器提供的信息都是来自有一定结构的数据库,在数据库里,为了检索和管理的方便,信息按照它本身的意义(如姓名、年龄、工作单位等)被存放在相应的字段里,一旦这些数据被调出来,经过CGI、ASP、JSP、PHP等转换成HTML后,其原来的意义无法转移到HTML标记中来,用户也就无法按照信息本来的意义去阅读。并且,由于操作系统以及数据库的不同,不同的系统及应用层面之间要想互相理解对方的数据格式是相当困难的。这就需要一种新技术或标准能够将最初保存在数据库服务器中的原始数据结构在不同的系统层面共享。这种新技术就是XML。
  使用XML可以解决上述的难题。W3C对XML作了如下描述:“XML描述了一类被称为XML文档的数据对象,并部分描述了处理它们的计算机程序的行为。XML是SGML的一个应用实例。从结构上说,XML文档遵从SGML文档标准。”同HTML一样,XML也是一种基于文本的标记语言,都是从SGML(Standard Generalize Markup Language,标准通用标记语言)发展而来,二者的不同在于:XML可以让我们根据要表现的文档,自由地定义标记来表现具有实际意义的文档内容,例如,我们可以定义〈文档名称〉〈/文档名称〉这样具有实际意义的标记。而且XML不像HTML那样具有固定的标记集合,它实际上是一种定义语言的语言,也就是说使用XML的用户可以定义无穷的标记来描述文档中的任何数据元素,将文档的内容组织成丰富的完整的信息体系。总起来说,XML具有四大特点:便于存储的数据格式、可扩展性、高度结构化以及方便的网络传输,这些特点为我们创建开放、高效、可扩展、个性化的Web应用提供了一个崭新的起点。
摘要
  在这一章中,我们将介绍PHP这个服务器端的脚本语言。我们将会看到,这个语言可以很好地支持与MySQL数据库的通信。
(2002-08-29 14:10:52)
--------------------------------------------------------------------------------
By Wing, 出处:Linuxaid
第三章:PHP入门
  在上一章中,我们学习了如何使用MySQL数据库引擎在一个简单的数据库(只包含一个叫Jokes的数据表)中存储一个笑话的列表。当时,我们是通过在MySQL客户端的命令行来输入SQL命令(查询语句)来完成的。在这一章中,我们将介绍PHP这个服务器端的脚本语言。我们将会看到,这个语言可以很好地支持与MySQL数据库的通信。
PHP简介
  正如我们在前面提到的,PHP是一个服务器端的脚本语言。这个概念可能很难理解,特别是如果你以前只用过HTML和JavaScript来设计过网页时更是如此。一个服务器端的脚本程序与JavaScript在许多地方有点相像,两者都允许你在Web页面的HTML中插入一些程序(脚本)。其结果就是,这些脚本使你可以控制在浏览器窗口内会显示什么,这显然要比直接使用HTML要来得灵活得多。
  JavaScript和PHP的关键的不同点是:当Web浏览器解释JavaScript时,包含这个脚本的Web页面已经被下载了,而对于象PHP这样的服务器端脚本程序来说,解释的工作是由服务器在将页面发出到浏览器之前完全的。解释工作完成后,Web页面中的PHP的代码将由脚本运行的结果所代替,浏览者看到的完全是标准的HTML文件。脚本是完全由服务器来处理的。这也就是它的命名的由来:服务器端脚本程序。
  让我们再回头看看我们在第一章里建立的示例today.php:
<HTML>
<HEAD>
<TITLE>Today's Date</TITLE>
</HEAD>
<BODY>
<P>Today's Date (according to this Web server) is</p>
<?ph
    echo( date("l, F dS Y.") );
?>
</BODY>
</HTML>

  这个程序中的绝大多数是采用HTML格式的。只有在中间的行是用PHP写的。
 表示“结束PHP代码”。Web服务器在将这个Web页面发送到请求它的浏览器之前会对这个两个标识符之前的所有内容进行处理,并将其转换成标准的HTML代码。浏览器接受到的页面将是这样的:
<HTML>
<HEAD>
<TITLE>Today's Date</TITLE>
Abs: 取得绝对值。
Acos: 取得反余弦值。
ada_afetch: 取得数据库的返回列。
ada_autocommit: 开关自动改动功能。
ada_close: 关闭 Adabas D 链接。
ada_commit: 改动 Adabas D 数据库。
ada_connect: 链接至 Adabas D 数据库。
ada_exec: 执行 SQL 指令。
ada_fetchrow: 取得返回一列。
ada_fieldname: 取得字段名称。
ada_fieldtype: 取得字段资料类型。
ada_freeresult: 释出返回资料的内存。
ada_numfields: 取得字段数目。
ada_numrows: 取得返回列数目。
ada_result: 取得返回资料。
ada_resultall: 返回 HTML 表格资料。
ada_rollback: 撤消当前交易。
AddSlashes: 字符串加入斜线。
apache_lookup_uri: 获得所有的 URI 相关信息。
apache_note: 获得及配置apache服务器的请求纪录。
array: 建立一个新的数组。
array_walk: 让使用者自订函数能处理数组中的每一个元素。
arsort: 将数组的值由大到小排序。
Asin: 取得反正弦值。
asort: 将数组的值由小到大排序。
aspell_check: 检查一个单字。
aspell_check-raw: 检查一个单字,即使拼错也不改变或修正。
aspell_new: 载入一个新的字典。
aspell_suggest: 检查一个单字,并提供拼写建议。
Atan: 取得反正切值。
Atan2: 计算二数的反正切值。
base64_decode: 将 BASE64 编码字符串解码。
base64_encode: 将字符串以 BASE64 编码。
basename: 返回不含路径的文件字符串。
base_convert: 转换数字的进位方式。
bcadd: 将二个高精确度数字相加。
bccomp: 比较二个高精确度数字。
bcdiv: 将二个高精确度数字相除。
bcmod: 取得高精确度数字的余数。
bcmul: 将二个高精确度数字相乘。
bcpow: 求一高精确度数字次方值。
bcscale: 配置程序中所有 BC 函数库的默认小数点位数。
bcsqrt: 求一高精确度数字的平方根。
bcsub: 将二个高精确度数字相减。
bin2hex: 二进位转成十六进位。
BinDec: 二进位转成十进位。
Ceil: 计算大于指定数的最小整数。
chdir: 改变目录。
checkdate: 验证日期的正确性。
checkdnsrr: 检查指定网址的 DNS 记录。
chgrp: 改变文件所属的群组。
chmod: 改变文件的属性。
Chop: 去除连续空白。
chown: 改变文件的拥有者。
Q:基于什么样的理由 PHP 比其它 CGI 好呢?有没有比较具体的数据可以证明 PHP 执行与其它 CGI 执行的效率好 ? 现在我的公司是用 C 来写 CGI 的,如果换成 PHP,会不会比较好呢 ?没有强而有力的依据的话,我就没办法说服上面的人让我转成 PHP 了...
A:
我认为"好" 要有三点
第一: 写出来的程式的执行速度快.
第二: 遇到有大量存取时的执行效能强.
第三: 程式开发的时间快,易维护。
php在这三点中,虽都不一定是最好的,但也都在前茅
以下是C,PHP和Perl在速度方面的比较
我用下面的算式测试
$s=1.0;
for ($i=1;$i<=10;$i++) {
for ($j=1;$j<=10;$j++) {
$s=$s*1.0005;
$s=$s/1.0004;
};
};
print $s;
?>
然后用ab -n 10000 -c 20 http://mycgi
测试,结果
C语言用了 37.511 秒
PHP3用了 45.393 秒
PERL用了 68.418 秒
看起是C 最快没错,不过,和PHP3的结果没有太大
的差距。
Perl最慢
以下为测试数据
==============================================
C 语言
==============================================
Document Path: /~evan/test/gcc.cgi
Document Length: 19 bytes
Concurrency Level: 20
Time taken for tests: 37.511 seconds
Complete requests: 10000
Failed requests: 0
Total transferred: 1750000 bytes
HTML transferred: 190000 bytes
Requests per second: 266.59
Transfer rate: 46.65 kb/s received
Connnection Times (ms)
min avg max
Connect: 0 30 3001
Processing: 4 40 69
Total: 4 70 3070
PHP3
==============================================
Document Path: /~evan/test/php3.php3
Document Length: 15 bytes
Concurrency Level: 20
Time taken for tests: 45.393 seconds
Complete requests: 10000
Failed requests: 0
Total transferred: 1710000 bytes
HTML transferred: 150000 bytes
Requests per second: 220.30
Transfer rate: 37.67 kb/s received
Connnection Times (ms)
min avg max
Connect: 0 34 3039
Processing: 6 53 183
从HTML中脱离
    这儿有三种方法从HTML中脱离,同时加入“PHP代码模式”
    Example 5-1. 从HTML中脱离的方法
1. <? echo("this is the simplest, an SGML processing instruction "); ?>
2. <?php echo("if you want to serve XML documents, do like this "); ?>
3. <script language="php">
echo ("some editors (like FrontPage) don't
like processing instructions");
</script>;
4. <% echo("As of PHP 3.0.4 you may optionally use ASP-style tags"); %>
语句的脱离方法
    语句的脱离方法和C及PERL是一样的------终止每一个语句时使用分号(;)。
    结束标签(?>)也暗示了说明的结束,所以下面的两句话是等价的:
<php
echo "This is a test";
?>
 
<php echo "This is a test" ?>
变量类型
    PHP支持如下的变量类型:
integer :整数
double :双精度数
string :字符串
array :队列数组
object :对象
pdfdoc (only if enabled PDF support) :PDF文本(仅仅在起用PDF支持之后生效)
pdfinfo (only if enabled PDF support) :PDF信息(仅仅在起用PDF支持之后生效)
    这些变量的类型通常不由程序员来设置;特别的,它在运行时由PHP依据上下文来设置使用什么类型。
    如果您喜欢强制将某个变量转换到指定的类型,您还可以对该变量进行“cast”操作,或者使用函数“settype()”。
 
    注意这些变量可能会在确定的情形下被不同的控制者使用,这依赖于此时该变量的类型是什么。想要获得更进一步的信息,请参考“Type Juggling”部分。
变量的初始化
    在PHP中初始化一个变量,您只需要简单的分派给它一个值即可。对于大多数类型,这样做是十分简单的;但是对于类型“Array(数组)和Objects(对象)”来说,需要使用有些不同的方法。
初始化数组
    一个数组可以使用如下的方法来初始化:使用连续的指定值,同时使用“array()”结构(这将在“Array 函数函数说明部分中被证明)。
标签:[!--infotagslink--]

您可能感兴趣的文章: