分类:
2007-02-10 16:03:52
1,httpd.conf 中ScoreBoardFile: File 用于存储服务器内部进程信息。如果没有指定(默认),那么ScoreBoard将存储在匿名共享内存片段中,并且对于第三方的应用来说,将是不可用的。
2,(Apache)KeepAlive:是否开启永久连接。YES意味着一次连接可以发出多次请求。
3,Session在PHP中是对Cookie的一个包装,然而在不同的语言中,其实现并不一致。
4,session.save_handler 定义了会话处理器的名称(默认files)。会话处理器指明与一个会话关联的数据的存储方式,可以指定为user,这样可以把会话数据存储在数据库中。
注意:在调用session_set_save_handler()之前,先要设置session.save_handler指令。
如果想让这样的session 跨页面使用,还要在每一个用到session的脚本文件中加入你自定的函数session_set_save_handler,所以,最好的方法是做成一个单独的文件,在每一个要用到session的脚本中用include来包含进来。
5,zval据我个人认为是一个Zend的泛型,他可以代表很多种类的参数。
6,在扫描源代码过程中,phpDocumentor使用的是类似GREP的形式,并没有象我们通常想的那样,使用正则表达式来实现。
编制符合PhpDocumentor规范的注释是非常重要的,掌握了这一点,基本上就可以利用PhpDocumentor为你工作了。
7,PHP的magic quote确实在某些地方起到了作用,可惜对SQL注入防御能力太弱,只能保护mysql。
8,tcp 连接是可靠的连接, 所有连接都经过三次握手,http是tcp/ip协议之上的一层.数据发送时是自上而下,层层添加相应的协议层头信息,数据接收时是自下而上,层层解码.
PHP接收的数据是发生在应用层,在这一层,数据报文中已不包含客户端的真实IP\mac地址(位于链路层)等信息,所以在这一层(应用层),PHP是不可能得到真正的客户端的IP地址\mac地址的.
9,如果你的程序发现在某时段内从某一个IP过来的投票数量超过你设定的一个定额,那么也不要告诉他禁止投票,直接把这之后的票全部插入到一个副表内,并且显示正常的投票成功页面,副表和正式表是一样的。
10,我们不应该把MVC中的M理解成Domain Model,它至多就是一个Application Model。它的作用是把你操作业务层获得的数据,包装成粗粒度的对象,返回给表现层。把它理解成一个数据对象更为贴切!
11,Doc++注释文档生成工具,根据源程序中的文档注释,可以输出TeX和HTML格式的文档。除了支持c/c++语言外,还支持IDL和 java。仅提供命令行使用方式。从可以找到有关Doc++的详细信息。
CppUnit一个c++的单元测试框架,可以通过派生测试类的方式,定制具体的测试方案。xUnit家族的一员,从JUnit移植而来, JUnit是Java语言的单元测试框架。从可以找到有关CppUint的详细信息。
12,New Zend Platform is FREE for application development.Zend Platform is the only all-in-one PHP production environment that ensures your applications run smoothly at all
times. Installs as a module in PHP on your Web Servers。
Zend Optimizer:replace inefficient code patterns with efficient code blocks. The replacement code blocks perform exactly the same operations as the original code, only faster.
Zend Optimizer also enables PHP to transparently load files encoded by the Zend Encoder or Zend SafeGuard Suite.
13,imagesetpixel() draws a pixel at x, y (top left is 0, 0) in image image of color color. 据此函数可以添加验证码的噪音功能。
14,Microsoft Jscript 提供了 11 个内部(或“内置”)对象。它们是Array、Boolean、Date、Function、Global、Math、NumberR、Object、RegExp、Error 以及 String 对象。
15,XML对大小写是敏感的,所以,XHTML也是大小写有区别的。所有的XHTML元素和属性的名字都必须使用小写。
16,为所有图片添加alt属性。alt属性指定了当图片不能显示的时候就显示供替换文本,这样做对正常用户可有可无,但对纯文本浏览器和使用屏幕阅读机的用户来说是至关重要的。只有添加了alt属性,代码才会被W3C正确性校验通过。
16,在设计上,XSLT 2.0 和 XQuery 1.0 有许多共同点。两种语言都基于同一基础:XPath 2.0。
17,如何通过COOKIE保存用户信息呢?
可以这样:setcookie ('userinfo', base64_encode (serialize ($user_array)));
取出用: $user_array=unserialize (base64_decode ($_COOKIE['userinfo']));
其实:通过SESSION应该会更安全。因为SESSION方式,仅仅将SESSION ID 存储于客户端。
18,在JAVA的WEB程序中,SERVLET是C,JAVABEAN是M,JSP是V,它们到最后都编译成JAVA类。
19,Flash Remoting 的方案,这种东西才是真正有意义的PHP和flash的结合。由视觉设计师完成flash部分, PHP 程序员通过 flash remoting 的方式将 数据发送到 flash 做成的客户端中。
20,模板和数据的结合(模板的调用)方式主要有两种:推的方式和拉的方式。推的方式是用PHP将数据推给模板,就是说需要程序员明确地为模板中的每一个变量赋值,将他们绑起来。而拉的方式则像把php 和 html 混在一起一样,模板种的变量主动把数据拽进来。
21,在实际开发中,我倾向于将一些基本服务从应用程序中抽取出来,形成一个应用程序框架。这个框架通常会包含一个 Dispatcher、基本的数据库访问服务、模版引擎、常用的辅助功能等。由于有了一个框架,所以我可以更加让 Dispatcher 更加灵活。
22,PHP不支持永久对象,在OOP中永久对象是可以在多个应用的引用中保持状态和功能的对象,这意味着拥有将对象保存到一个文件或数据库中的能力,而且可以在以后装入对象。这就是所谓的序列化机制。
23,设法避免诸如嵌套表(nested table)这样的复杂的 HTML
24,14个更旧的扩展被从PHP核心删除。这些包括
ext/cpdf,ext/dbx,ext/dio,ext/fam,ext/ingres_ii,ext/ircg,ext/mcve,ext/mnogosearch,ext/
oracle,ext/ovrimos,ext/pfpro,ext/w32api,ext/yp,sapi/activescript。所有这些还可用于PECL中,尽管并不是
所有这些扩展都能得到积极维护。
25,根据IETF 标准,大多数浏览器应该支持使用 gzip 压缩的内容。也就是说你可zlib是个支援gzip档案格式的函数库,它使得gz档的存取就犹如开档关档一样 地容易,您可以很容易地为您的程序加入gz档的支援。
26,$_FILES['userfile']['error']的可以有下列取值和意义:
0——没有错误发生,文件上传成功。
1——上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。
2——上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
3——文件只有部分被上传。
4——没有文件被上传。
27,文件大小限制和检验:服务器端的upload_max_filesize,post_max_size和memory_limit。这几项不能够用脚本来设置。
28,可以通过set_exception_handler()设置一个应用的全局异常处理器。
29,this是指向对象实例的一个指针,self是对类本身的一个引用,parent是对父类的引用。
30,因为应用程序中的功能性 bug 不会产生错误,所以在所有调试策略中,关于如何正确地放置和使用 print 或 die 语句来调试 PHP 应用程序的知识是一种很好的资产。
使用调试器,可以设置断点并查看 PHP 代码到所设断点之前的浏览器输出。然后可以继续代码的执行并查看到下一断点之前的浏览器输出,然后再到下一个,直到 PHP 脚本完成。
31,为了寻找一个更易用的SAX的取代方案,越来越多的开发人员开使转向StAX (Streaming API for XML)。与SAX相比,StAX使用从XML文件中提取标记的方法,而不是回调。
32,文本节点的 nodeName 应该是什么?类似地,元素的 nodeValue 应该是什么?
文本节点的 nodeName 属性是空值(或者在一些浏览器中称为 “未定义”),因为文本节点没有名称。
元素有 nodeName,即元素名,但元素的 nodeValue 属性值总是空。
33,类常量始终为 public,所以不能使用可见度关键字。这并是问题,因为任何更改其值的尝试都将导致解析错误。
34,Objects implementing the XMLHttpRequest interface MUST also implement the EventTarget interface
setRequestHeader method可能会导致安全问题。
35,直接通过View中的表单调用Model中的方法去修改数据是不合适的,数据的更新修改方法只能借助Controller来调用。
View只能以数据的只读方式调用Model中的方法,不能对数据进行修改。
Model is the data that your application need!在三层式应用这一块, model 就是反映数据库逻辑的一切事务.
36,组合使用静态方法和静态变量保持单件模式实例,并且设置构造函数为私有,以防止直接实例化类而创建实例:
class Test {
static $time = NULL;
private function __construct() {
//statements
die("This will never be showed!");
}
public static function getTime() {
//statements
if (is_null(self::$time)) {
self::$time = date("Y-m-d H:i:s");
}
return self::$time;
}
}
37,打开ADODB的CACHE功能,会减轻数据库服务器的压力,但同时会增加WEB服务器的压力.
ADODB官方并不建议在硬件允许的情况下使用cache功能。只有在数据库服务器压力特别大时才建议将cache打开使得web服务器能够分担数据库的压力
38,对普通文件进行索引时只要对文件的全文进行索引,而针对html、xml文件时,对标签类型不能进行索引,在实现上html、xml的索引需要额外的数据流分析器,以分析哪些内容有用哪些无用。
39,(ADOdb)The format of the supplied DSN is in its fullest form:
phptype(dbsyntax)://username:password@protocol+hostspec/database?option=value
40,PHP 的类是不支持多重继承的,但可以实现多个接口 (同时实现的接口方法名不能相同,否则会混淆)。
PHP 的接口不能声明属性。多重继承基本上意味着你的设计是有问题。
41,PHP是一种和jsp, velocity, freemarker甚至xlst一样的一种视图技术. 但重要的是, PHP还不仅仅是一种视图技术, 他同时具有解决数据访问和业务逻辑处理能力的强大的技术.
42,Keep in mind that an abstraction layer like PEAR DB does absolutely nothing when it comes to making sure your actual SQL queries are portable.
43,You can't build PHP with support for a database whose client libraries you don't have on your system. For example, if you don't have the Oracle client libraries, you can't build PHP with support for Oracle databases.
44,The syntax for DDL is not as standardized as that for DML, but as PHP just sends any SQL commands you give it to the database, you can use any SQL commands your database supports.
45,The components of a DSN in PEAR are assembled into a URL-like string:
type(dbsyntax)://username:password@protocol+hostspec/database
mysql:///library
mysql://localhost/library
mysql://librarian@localhost/library
mysql:// librarian@tcp+localhost/library
mysql:// librarian:passw0rd@localhost/library
46,PEAR DB::connect() $options 用于设置连接参数,有以下可设置条目:
autofree ,debug ,persistent ,portability ,seqname_format ,ssl
47,The built-in ob_gzhandler( ) function is designed to be used as a callback with ob_start( ). It compresses the buffered page according to the Accept-Encoding header sent by the browser. Possible compression techniques are gzip, deflate, or none.
48,缓解WEB交通压力的三个方案:反向代理( reverse-proxy caches), 负载均衡(load-balancing servers), and 数据库复制(database replication).
49,XSS攻击仅限于客户端技术。历史上,XSS常被用于捕捉受害者的COOKIE,正是因为document.cookie中包含这个信息。为了阻止XSS,所需要的仅仅是转义输出。
50,对于PHP的扩展,包括两种方式:一、PHP扩展, 二、Zend扩展。可以认为PHP扩展是一种功能的扩展,二Zend扩展将改变脚本引擎的工作方式。Opcode等缓存系统属于Zend扩展。
51,Web服务器接口早在PHP4中就已经被提取出来,以支持除了Apache之外的服务器。
52,(PHP CGI)In general, the CGI version is more reliable, but it is slower than SAPI implementations because it has to be loaded with each request.