默认:

httpd.conf 在/etc/httpd/conf

my.cnf 在/etc

php.ini 在/usr/local/lib

在Unix上,php.ini文件缺省放在/usr/local/lib上面,因为缺省的存放路径是<install-path> /lib,但是可以在编译的时候使用--with-config-file-path参数来修改php.ini的存放位置,例如你可以使用--with- config-file-path=/etc把它存放到/etc下面,然后可以从源码包中拷贝php.ini-dist到/etc/php.ini并修改使之满足需要。

Windows上面php.ini的缺省位置是windows系统目录,如果使用了Apache的话,那么将首先从 Apache的安装目录中查找 php.ini,例如:c:program filesapache groupapache,这样你可以在同一台机器上面为不同的Apache版本设置不同的php.ini文件。
负载均衡将是大型网站解决高负荷访问和大量并发请求采用的终极解决办法。
负载均衡技术发展了多年,有很多专业的服务提供商和产品可以选择,我个人接触过一些解决方法,其中有两个架构可以给大家做参考。
硬件四层交换
第四层交换使用第三层和第四层信息包的报头信息,根据应用区间识别业务流,将整个区间段的业务流分配到合适的应用服务器进行处理。 第四层交换功能就象是虚IP,指向物理服务器。它传输的业务服从的协议多种多样,有HTTP、FTP、NFS、Telnet或其他协议。这些业务在物理服务器基础上,需要复杂的载量平衡算法。在IP世界,业务类型由终端TCP或UDP端口地址来决定,在第四层交换中的应用区间则由源端和终端IP地址、TCP和UDP端口共同决定。
在硬件四层交换产品领域,有一些知名的产品可以选择,比如Alteon、F5等,这些产品很昂贵,但是物有所值,能够提供非常优秀的性能和很灵活的管理能力。Yahoo中国当初接近2000台服务器使用了三四台Alteon就搞定了。

软件四层交换
大家知道了硬件四层交换机的原理后,基于OSI模型来实现的软件四层交换也就应运而生,这样的解决方案实现的原理一致,不过性能稍差。但是满足一定量的压力还是游刃有余的,有人说软件实现方式其实更灵活,处理能力完全看你配置的熟悉能力。
软件四层交换我们可以使用Linux上常用的LVS来解决,LVS就是Linux Virtual Server,他提供了基于心跳线heartbeat的实时灾难应对解决方案,提高系统的鲁棒性,同时可供了灵活的虚拟VIP配置和管理功能,可以同时满足多种应用需求,这对于分布式的系统来说必不可少。

一个典型的使用负载均衡的策略就是,在软件或者硬件四层交换的基础上搭建squid集群,这种思路在很多大型网站包括搜索引擎上被采用,这样的架构低成本、高性能还有很强的扩张性,随时往架构里面增减节点都非常容易。这样的架构我准备空了专门详细整理一下和大家探讨。

对于大型网站来说,前面提到的每个方法可能都会被同时使用到,我这里介绍得比较浅显,具体实现过程中很多细节还需要大家慢慢熟悉和体会,有时一个很小的squid参数或者apache参数设置,对于系统性能的影响就会很大,希望大家一起讨论,达到抛砖引玉之效。


阅读全文

云计算

WEB2.0 jackxiang 2010-1-6 13:35
IT专家网的解释:

  “云计算”(Cloud Computing)是分布式处理(Distributed Computing)、并行处理(Parallel Computing)和网格计算(Grid Computing)的发展,或者说是这些计算机科学概念的商业实现。许多跨国信息技术行业的公司如IBM、Yahoo和Google等正在使用云计算的概念兜售自己的产品和服务。

  云计算这个名词可能是借用了量子物理中的“电子云”(Electron Cloud),强调说明计算的弥漫性、无所不在的分布性和社会性特征。量子物理上有“电子云(electron cloud)”,在原子核周围运动的电子不是一个经验世界的轨道例如像天体一样的运行轨道,而是弥漫空间的、云状的存在,描述电子的运动不是牛顿经典力学而是一个概率分布的密度函数,用薛定谔波动方程来描述,特定的时间内粒子位于某个位置的概率有多大,这跟经典力学的提法完全不同。

  电子云有以下特性,概然性、弥漫性、同时性等等,云计算可能的确是来自电子云的概念,前今年就有所谓“无所不在的计算”,IBM有一个无所不在的计算叫“Ubiquitous “,MS(Bill)不久也跟着提出一个无所不在的计算“Pervade“,现在人们对无所不在的计算又有了新的认识,现在说是”Omnipresent “。但是,云计算的确不是纯粹的商业炒作,的确会改变信息产业的格局,现在许多人已经用上了Google Doc和Google Apps,用上了许多远程软件应用如Office字处理而不是用自己本地机器上安装这些应用软件,以后谁还会花钱买Office软件呢?还有许多企业应用如电子商务应用,例如要写一个交易程序, Google的企业方案就包含了现成的模板,一个销售人员根本没学习过Netbeanr也能做出来。这种计算和产业动向是符合开源精神的,符合 SaaS(Software as a Service)趋势。

  现在有这样的说法,当今世界只有五台计算机,一台是Google的,一台是IBM的,一台是Yahoo的,一台是Amazon的,一台是 Microsoft的,因为这五个公司率先在分布式处理的商业应用上捷足先登引领潮流。Sun公司很早就提出说“网络就是计算机”是有先见之明的。

http://hi.baidu.com/wjtao291/blog/item/1f8fceede9bc304979f05536.html
在windows下,一个文件有:创建时间、修改时间、访问时间。
而在Linux下,一个文件也有三种时间,分别是:访问时间、修改时间、状态改动时间。

两者有此不同,在Linux下没有创建时间的概念,也就是不能知道文件的建立时间,但如果文件建立后就没有修改过,修改时间=建立时间;如果文件建立后,状态就没有改动过,那么状态改动时间=建立时间;如果文件建立后,没有被读取过,那么访问时间=建立时间,因为不好判断文件是否被改过、读过、其状态是否变过,所以判断文件的建立时间基本上能为不可能。

如何查一个文件的三个时间呢?
先用下面的命令来建立一个文件
# date && echo "this is file be used test time of file" >filetime.txt && ll --full-time filetime.txt
Tue Aug 4 15:13:44 HKT 2009
-rw-r--r--    1 root     root           39 2009-08-04 15:13:44.000000000 +0800 filetime.txt

通过stat filename.txt来查,如:
# stat filetime.txt
File: `filetime.txt'
Size: 39              Blocks: 8          IO Block: 4096   Regular File
Device: 802h/2050d      Inode: 17          Links: 1  
Access: (0644/-rw-r--r--) Uid: (    0/    root)   Gid: (    0/    root)
Access: 2009-08-04 15:13:44.000000000 +0800
Modify: 2009-08-04 15:13:44.000000000 +0800
Change: 2009-08-04 15:13:44.000000000 +0800

说明:Access访问时间。Modify修改时间。Change状态改动时间。可以stat *查看这个目录所有文件的状态。
ctime=change time
atime=access time
mtime=modifiy time

因为这是一个新的文件(filetime.txt),没做过内容、属性的更改,也没读过这个文件,所以三者(访问时间、修改时间、状态改动时间)的时间是一致的,这时文件的修改时间与这三个时间是一样的,是没有疑问的。

1、访问时间,读一次这个文件的内容,这个时间就会更新。比如对这个文件运用 more、cat等命令。ls、stat命令都不会修改文件的访问时间。
2、修改时间,修改时间是文件内容最后一次被修改时间。比如:vi后保存文件。ls -l列出的时间就是这个时间。
3、状态改动时间。是该文件的i节点最后一次被修改的时间,通过chmod、chown命令修改一次文件属性,这个时间就会更新。

另个除了可以通过stat来查看文件的mtime,ctime,atime等属性,也可以通过ls命令来查看,具体如下:
ls -lc filename 列出文件的 ctime (最后更改时间)
ls -lu filename 列出文件的 atime(最后存取时间)
ls -l filename 列出文件的 mtime (最后修改时间)

在linux中stat函数中,用st_atime表示文件数据最近的存取时间(last accessed time);用st_mtime表示文件数据最近的修改时间(last modified time);使用st_ctime表示文件i节点数据最近的修改时间(last i-node's status changed time)。

字段           说明                  例子           ls(-l)
st_atime 文件数据的最后存取时间       read            -u
st_mtime 文件数据的最后修改时间       write           缺省
st_ctime 文件数据的最后更改时间       chown,chmod     -c


在linux系统中,系统把文件内容数据与i节点数据是分别存放的,i节点数据存放了文件权限与文件属主之类的数据。

另外,可以格式化输出文件的三种时间,如:
find . -name file -printf "%AY-%Am-%Ad %AH:%AM:%AS"
find . -name file -printf "%TY-%Tm-%Td %TH:%TM:%TS"
find . -name file -printf "%CY-%Cm-%Cd %CH:%CM:%CS"

linux的ctime代表的是文件修改时间,如果文件被修改过就很难知道文件的创建时间,在某些特殊情况下,需要查看文件的创建时间,正常情况下查看文件的ctime是无法实现的。可以使用一个变通的方法来实现保留文件创建时间,但是同时也会牺牲一些其它特性。

可以在mount文件的时候使用参数-o noatime,来把系统更新atime的特性关闭。使用了noatime参数挂载后,在文件被修改后文件的atime是不会被改变的,使用stat查看到的atime就是文件的创建时间。
如:
# / sbin/mkfs -t ext3 /dev/ram10
# mount -t ext3 -o noatime /dev/loop0 /mnt/foo
# mount
/dev/ram10 on /mnt/foo type ext3 (rw,noatime)
# cd /mnt/foo
# touch filetime1.txt
# stat filetime1.txt
File: `filetime1.txt'
Size: 0               Blocks: 0          IO Block: 4096   Regular File
Device: 10ah/266d       Inode: 12          Links: 1  
Access: (0644/-rw-r--r--) Uid: (    0/    root)   Gid: (    0/    root)
Access: 2009-08-04 20:51:32.000000000 +0800
Modify: 2009-08-04 20:51:32.000000000 +0800
Change: 2009-08-04 20:51:32.000000000 +0800

# echo foo.ok >> filetime1.txt
[root@logs-bak foo]# stat filetime1.txt
File: `filetime1.txt'
Size: 14              Blocks: 2          IO Block: 4096   Regular File
Device: 10ah/266d       Inode: 12          Links: 1  
Access: (0644/-rw-r--r--) Uid: (    0/    root)   Gid: (    0/    root)
Access: 2009-08-04 20:51:32.000000000 +0800
Modify: 2009-08-04 20:53:27.000000000 +0800
Change: 2009-08-04 20:53:27.000000000 +0800

# cat filetime1.txt
foo.ok
#stat filetime1.txt
File: `filetime1.txt'
Size: 14              Blocks: 2          IO Block: 4096   Regular File
Device: 10ah/266d       Inode: 12          Links: 1  
Access: (0644/-rw-r--r--) Uid: (    0/    root)   Gid: (    0/    root)
Access: 2009-08-04 20:51:32.000000000 +0800
Modify: 2009-08-04 20:53:27.000000000 +0800
Change: 2009-08-04 20:53:27.000000000 +0800

# 通过以上实验可以看出文件的access time 是不变的。

接着向下多测试一下.
# vi filetime1.txt
# stat filetime1.txt
File: `filetime1.txt'
Size: 23              Blocks: 2          IO Block: 4096   Regular File
Device: 10ah/266d       Inode: 14          Links: 1  
Access: (0644/-rw-r--r--) Uid: (    0/    root)   Gid: (    0/    root)
Access: 2009-08-04 20:55:05.000000000 +0800
Modify: 2009-08-04 20:55:05.000000000 +0800
Change: 2009-08-04 20:55:05.000000000 +0800

# chmod 777 filetime1.txt
# stat filetime1.txt
File: `filetime1.txt'
Size: 23              Blocks: 2          IO Block: 4096   Regular File
Device: 10ah/266d       Inode: 14          Links: 1  
Access: (0777/-rwxrwxrwx) Uid: (    0/    root)   Gid: (    0/    root)
Access: 2009-08-04 20:55:05.000000000 +0800
Modify: 2009-08-04 20:55:05.000000000 +0800
Change: 2009-08-04 20:57:36.000000000 +0800
可见,chmod后,Ctime的变化。

#########################################################
说到这里,大概大家也对在linux下文件的时间有所了解了吧!
那么以下的操作对文件的时间有什么影响呢?

操作                        atime        mtime       ctime
----------------------------------------------------------
mv
----------------------------------------------------------
cp
----------------------------------------------------------
touch
----------------------------------------------------------
cat/more/less
----------------------------------------------------------
ls
----------------------------------------------------------
chmod/chown
----------------------------------------------------------
ln
----------------------------------------------------------
echo
----------------------------------------------------------
vi
----------------------------------------------------------
(请大家测试完成这个表吧!!!!做完测试可以给我留言啊!)
##############################################################

另外,从kernel2.6.29开,还默认集成了一个relatime的属性。可能是因为在文件读操作很频繁的系统
中,atime更新所带来的开销很大,所以很多SA都在挂装文件系统的时候使用noatime属性来停止更新atime。但是有些程序需要根据atime进行一些判断和操作,所以Linux就推出了一个relatime特性。
使用这个特性来挂装文件系统后,只有当mtime比atime更新的时候,才会更新atime。事实上,这个时候atime和mtime已经是同一个东西了。所以这个选项就是为了实现对atime的兼容才推出的。并不是一个新的时间属性。使用方法就是通过mount -o relatime /dir来挂装目录。
route add -net  10.10.101.0  netmask 255.255.255.0 gw 10.10.100.1
cat route-eth0
10.10.101.0/24 via 10.10.100.1 dev eth0
/etc/rc.d/init.d/network restart
netstat -r
[root@1314it network-scripts]# cat /etc/sysconfig/network-scripts/route-eth0
123.123.123.0 via 156.156.156.156 dev eth0
[root@1314it network-scripts]#
已测试成功 重启网络会执行此文件
= = =
内网:有两个网段10.10.100.0/24和10.10.101.0/24,
服务器ip: a.b.c.d   外网网关e.f.g.h  服务器内网卡10.10.100.254
内网10.10.101.0/24网段的机器无法访问10.10.100.254这台机器。
登陆服务器查看路由表:
[root@www conf]# netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
10.10.100.0     *               255.255.255.0   U         0 0          0 eth0
169.254.0.0     *               255.255.0.0     U         0 0          0 eth1
default         e.f.g.h    0.0.0.0         UG        0 0          0 eth1
因此可以看到在10.10.100.254服务器上无法看到10.10.101.0/24的路由选择表路由条目,因此可以两种方法添加,
临时性的:
route add -net  10.10.101.0  netmask 255.255.255.0 gw 10.10.100.1
但重新启动后就会失效.因此在/etc/sysconfig/network-scripts/目录下建立文件。因为我们是做内网的路由,并且内网网卡为eth0,因此我们建立route-eth0文件如下:
[root@www network- ......
linux下想解压rar文件 必须安装软件,我使用到是rarlinux  
下面是下载地址
rarlinux官方网站下载地址
http://www.rarsoft.com/download.htm

安装                                      //tar.gz文件详细解压步骤
先解压tar.gz文件                  
直接 cd 到相应到文件夹
make                    // 如果提示权限不够 su root 取得最高权限
然后 make install

tar zxvf rarlinux-3.x.x.tar.gz

./configure &make &make install


恭喜你安装成功

最后
使用rarlinux解压rar文件
使用命令  

unrar e filesname.rar

解压rar文件
ok!~

============================================
rarlinux 使用(更多功能)

查看压缩包中的文档
$rar l XXX.rar 或 $rar v XXX.rar

查看压缩包中的文档(只看有什么文档)
$rar lb XXX.rar 或 $rar vb XXX.rar

查看压缩包中的文档(周详信息)
$rar lt XXX.rar 或 $rar vt XXX.rar

============================================
把压缩包的内容解压到当前目录
$rar e XXX.rar

把压缩包的内容解压到指定目录,比如/home/yxd/tmp/下面
$rar e XXX.rar /home/yxd/tmp/

把压缩包解的内容压到指定目录,比如/home/yxd/tmp/下面,包含压缩包中的路径
$rar x XXX.rar /home/yxd/tmp/

============================================
压缩指定的一个文档,比如aaa,以默认压缩率
$rar a XXX.rar aaa

压缩指定的一个文档,比如aaa,以最大压缩率
$rar a -m5 XXX.rar aaa

压缩指定的一个目录下的任何文档,比如ddd目录下的任何文档
$rar a XXX.rar ddd/

压缩指定的一个目录下的任何文档,比如ddd目录下的任何文档和任何子目录
$rar a -r XXX.rar ddd/

压缩指定的一个目录下的任何文档,比如ddd目录下的任何文档和任何子目录,但是不包含空目录
$rar a -r -ed XXX.rar ddd/

压缩指定的一个目录下的任何文档,比如ddd目录,连目录也一起压缩,包括子目录
$rar a XXX.rar ddd
目前,在web开发领域,主要的数据交换格式有XML和JSON,对于XML相信每一个web developer都不会感到陌生;相比之下,JSON可能对于一些新步入开发领域的新手会感到有些陌生,也可能你之前已经听说过,但对于XML和 JSON的不同之处可能会不怎么了解。对于在 Ajax开发中,是选择XML还是JSON,一直存在着争议,个人还是比较倾向于JSON的,虽然JSON才处于起步阶段,但我相信JSON最终会取代 XML成为Ajax的首选,到时Ajax可能要更名为Ajaj(Asynchronous JavaScript and JSON)了;

1.数据交换格式比较之关于XML和JSON:

XML:extensible markup language,一种类似于HTML的语言,他没有预先定义的标签,使用DTD(document type definition)文档类型定义来组织数据;格式统一,跨平台和语言,早已成为业界公认的标准。具体的可以问Google或百度。相比之JSON这种轻量级的数据交换格式,XML可以称为重量级的了。

JSON : JavaScript Object Notation 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language , Standard ECMA-262 3rd Edition - December 1999 的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。

2.数据交换格式比较之关于轻量级和重量级:

轻量级和重量级是相对来说的,那么XML相对于JSON的重量级体现在哪呢?我想应该体现在解析上,XML目前设计了两种解析方式:DOM和SAX;

DOM是把一个数据交换格式XML看成一个DOM对象,需要把XML文件整个读入内存,这一点上JSON和XML的原理是一样的,但是XML要考虑父节点和子节点,这一点上JSON的解析难度要小很多,因为JSON构建于两种结构:key/value,键值对的集合;值的有序集合,可理解为数组;

SAX不需要整个读入文档就可以对解析出的内容进行处理,是一种逐步解析的方法。程序也可以随时终止解析。这样,一个大的文档就可以逐步的、一点一点的展现出来,所以SAX适合于大规模的解析。这一点,JSON目前是做不到得。

所以,JSON和XML的轻/重量级的区别在于:JSON只提供整体解析方案,而这种方法只在解析较少的数据时才能起到良好的效果;而XML提供了对大规模数据的逐步解析方案,这种方案很适合于对大量数据的处理。

3.数据交换格式比较之关于数据格式编码及解析的难度:

在编码上,虽然XML和JSON都有各自的编码工具,但是JSON的编码要比XML简单,即使不借助工具,也可以写出JSON代码,但要写出好的 XML代码就有点困难;与XML一样,JSON也是基于文本的,且它们都使用Unicode编码,且其与数据交换格式XML一样具有可读性。

主观上来看,JSON更为清晰且冗余更少些。JSON网站提供了对JSON语法的严格描述,只是描述较简短。从总体来看,XML比较适合于标记文档,而JSON却更适于进行数据交换处理。

在解析上,在普通的web应用领域,开发者经常为XML的解析伤脑筋,无论是服务器端生成或处理XML,还是客户端用 JavaScript 解析XML,都常常导致复杂的代码,极低的开发效率。

实际上,对于大多数web应用来说,他们根本不需要复杂的XML来传输数据,XML宣称的扩展性在此就很少具有优势;许多Ajax应用甚至直接返回 HTML片段来构建动态web页面。和返回XML并解析它相比,返回HTML片段大大降低了系统的复杂性,但同时缺少了一定的灵活性。同XML或HTML 片段相比,数据交换格式JSON 提供了更好的简单性和灵活性。在web serivice应用中,至少就目前来说XML仍有不可动摇的地位。

SAX
SAX是Simple API for XML,并不是由W3C官方所提出的标准,适用于处理数据流,即随着数据的流动而依次处理数据。是事件驱动的解析XML的API。
DOM
DOM是Document Object Model文档对象模型的缩写。根据W3C DOM规范(http://www.w3.org/DOM/),DOM是一种与浏览器,平台,语言无关的接口,使得你可以访问页面其他的标准组件。
http://www.json.org/json-zh.html
刚做完一个小的使用Ajax的项目。整个小项目使用Javascrīpt做客户端,使用PHP做服务器端、利用xmlHttpRequest组件作为交互工具,利用XML作为数据传输的格式。做完后基本做一个简单总结,简单分析一下使用XML作为传输格式的优劣。

[  XML ]
使用XML作为传输格式的优势:
1. 格式统一, 符合标准
2. 容易与其他系统进行远程交互, 数据共享比较方便

缺点:
1. XML文件格式文件庞大, 格式复杂, 传输占用带宽
2. 服务器端和客户端都需要花费大量代码来解析XML, 不论服务器端和客户端代码变的异常复杂和不容易维护
3. 客户端不同浏览器之间解析XML的方式不一致, 需要重复编写很多代码
4. 服务器端和客户端解析XML花费资源和时间


[ JSON ]
那么除了XML格式, 还有没有其他格式, 有一种叫做JSON (Javascrīpt Object Notation) 的轻量级数据交换格式能够替代XML的工作.

优点:
1. 数据格式比较简单, 易于读写, 格式都是压缩的, 占用带宽小
2. 易于解析这种语言, 客户端Javascrīpt可以简单的通过eval()进行JSON数据的读取
3. 支持多种语言, 包括Actionscrīpt, C, C#, ColdFusion, Java, Javascrīpt, Perl, PHP, Python, Ruby等语言服务器端语言, 便于服务器端的解析
4. 在PHP世界, 已经有PHP-JSON和JSON-PHP出现了, 便于PHP序列化后的程序直接调用. PHP服务器端的对象、数组等能够直接生JSON格式, 便于客户端的访问提取.
   另外PHP的PEAR类已经提出了支持 (http://pear.php.net/pepr/pepr-proposal-show.php?id=198)
5. 因为JSON格式能够直接为服务器端代码使用, 大大简化了服务器端和客户端的代码开发量, 但是完成的任务不变, 且易于维护

缺点:
1. 没有XML格式这么推广的深入人心和使用广泛, 没有XML那么通用性
2. JSON格式目前在Web Service中推广还属于初级阶段

PS: 据说Google的Ajax是使用 JSON+模板 做的

XML 是一种用于面向服务的体系结构 (SOA) 和数据传输的常见传输。当然,目前许多服务以 SOAP 格式存在。不过,何时将其用于数据传输在 Ajax 社区中存在分岐。

[  XML ]
使用XML作为传输格式的优势:
1. 格式统一, 符合标准
2. 容易与其他系统进行远程交互, 数据共享比较方便
3.调用将 XML 用作传输的现有服务。
4.使用 XSLT 可以动态转换 XML。这是企业服务总线 (ESB) 方案中的理想功能。

缺点:
1. XML文件格式文件庞大, 格式复杂, 传输占用带宽
2. 服务器端和客户端都需要花费大量代码来解析XML, 不论服务器端和客户端代码变的异常复杂和不容易维护
3. 客户端不同浏览器之间解析XML的方式不一致, 需要重复编写很多代码
4. 服务器端和客户端解析XML花费资源和时间


[ JSON ]
那么除了XML格式, 还有没有其他格式, 有一种叫做JSON (JavaScript Object Notation) 的轻量级数据交换格式能够替代XML的工作.

优点:
1. 数据格式比较简单, 易于读写, 格式都是压缩的, 占用带宽小,浏览器解析快
2. 易于解析这种语言, 客户端JavaScript可以简单的通过()进行JSON数据的读取
3. 构造友好,支持多种语言, 包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等语言服务器端语言, 便于服务器端的解析
4. 在PHP世界, 已经有PHP-JSON和JSON-PHP出现了, 便于PHP序列化后的程序直接调用. PHP服务器端的对象、数组等能够直接生JSON格式, 便于客户端的访问提取.
   另外PHP的PEAR类已经提出了支持
5. 因为JSON格式能够直接为服务器端代码使用, 大大简化了服务器端和客户端的代码开发量, 但是完成的任务不变, 且易于维护
6.相当稳定。JSON 的附加内容将成为超集。

缺点:
1. 没有XML格式这么推广的深入人心和使用广泛, 没有XML那么通用性
2. JSON格式目前在Web Service中推广还属于初级阶段

   个人总结:  XML 或是JSON  可以视情况使用,  一个项目在特定情况下可以同时使用这两种格式.

    不过本并不建议如此来做, 因为这种方式可能会给整个项目的代码管理带来麻烦.还需慎重!
疯狂代码 http://CrazyCoder.cn/ ĵ:http:/CrazyCoder.cn/Security/Article73026.html
什么是SOA?“SOA(Service Oriented Architecture面向服务架构)是种新面向服务架构编程模型号称
“下代软件Software架构”SOA由Gartner在1996年提出到了2002年12月Gartner又提出了SOA是“现代应用
开发领域最重要课题”并预计到2008年SOA将成为占有绝对优势软件Software工程实战思路方法 ;SOA就是
服务集合从软件Software和业务功能两方面观点看服务就是定义良好软件Software组件它不依赖于任何它应用
上下文或状态
在技术上定义这些服务以及它们到应用接口然后实现这些服务是SOA核心部分.这些服务通常被实现为Web
Services应用可以通过简单对象访问协议(Simple Object Access ProtocolSOAP)来访问它基于HTTP协议以
XML形式进行传输.
从根本上说SOA是服务接口种流和种关系设计接口及其关系需要熟练掌握Web技术、业务流程和服务下技术平
台以及采用它们应用等方面知识架构师不仅必须了解如何构造Web服务而且还要了解现有应用和计划未来使用
应用如何使用它们

;
SOA和Web Services是比较大概念是种规范标准(封装服务和提供服务规范标准)它们降低了后台如何运行重要
程度你可以用区别编程语言和平台来并实现SOA和Web Services甚至有人由此预计 5年后JavaEE不再是主流标
准设计模型Java EE太过复杂很显然如果我用简单方式也可以实现SOA那么为什么要用Java EE呢?这就是平台
力量平台影响力总是大于应用JavaEE是个小平台(对于般开发而言它已经是个非常大平台但是技术和需要总是在
不断发展)而SOA是个大平台从面向过程面向对象面向组件和面向业务各种编程模型目前JavaEE大部份时候是在
面向组件和面向业务的间而SOA是面向业务应该说对于企业应用非常有优势
;
目前IBM可以说是SOA主宰力量我们可以看到它甚至在PHP方面也在大力推广SOA(IBM、Oracle 尝试把PHP
应用到SOA 的中)足见其野心的大
;
我们看看IBM在PHP SOA方面进展:
2005.7 IBM用PHP实现SDO并提交到PHPPECL库
2005.12 IBM联合BEA、Oracle、IONA、SAP、Siebel、Sybase、Xcalia以及Zend公司共同发布了两项针对
SOA重要编程模型规范标准——SCA(Service Component Architecture)和SDO(Service Data Object) ; ;注意
包括Zend公司Zend和PHP关系就类似于Sun和Java ; ; ; ; ; ; ;
2006.3 PHP SDO v1.0.0发布2006.9 PHP SDO v1.0.4发布
2006.9 PHP SCA v0.1.0发布
;详情请参看:
SOA PHP Homepage

SOA和PHP

WEB2.0 jackxiang 2010-1-6 11:53
什么是SOA?

SOA(Service Oriented Architecture,面向服务的架构)是一种新的面向服务架构的编程模型,号称“下一代软件架构”。SOA由Gartner在1996年提出的,到了2002年12月,Gartner又提出了SOA是“现代应用开发领域最重要的课题”,并预计到2008年,SOA将成为占有绝对优势的软件工程实践方法。

SOA就是服务的集合。从软件和业务功能两方面的观点看,服务就是定义良好的软件组件,它不依赖于任何调用它的应用程序的上下文或状态。

在技术上,定义这些服务以及它们到应用程序的接口,然后实现这些服务,是SOA的核心部分.这些服务通常被实现为Web Services,应用程序可以通过简单对象访问协议(Simple Object Access Protocol,SOAP)来访问它,基于HTTP协议以XML的形式进行传输.

从根本上说,SOA是服务接口的一种流和一种关系,设计接口及其关系需要熟练掌握Web技术、业务流程和服务下的技术平台以及采用它们的应用程序等方面的知识。架构师不仅必须了解如何构造Web服务,而且还要了解现有应用程序和计划未来使用的应用程序如何使用它们。




SOA和Web Services是比较大的概念,是一种规范(封装服务和提供服务的规范),它们降低了后台程序如何运行的重要程度。你可以用不同的编程语言和平台来并实现SOA和Web Services。甚至有人由此预计五年后JavaEE不再是主流的标准程序设计模型,因为Java EE太过复杂。很显然,如果我用简单的方式也可以实现SOA,那么为什么要用Java EE呢? 这就是平台的力量,平台的影响力总是大于应用,JavaEE是个小平台(对于一般的开发而言,它已经是个非常大的平台,但是技术和需要总是在不断发展的),而SOA是个大平台。从面向过程,面向对象,面向组件和面向业务各种编程模型,目前JavaEE大部份时候是在面向组件和面向业务之间,而SOA是面向业务,应该说对于企业应用非常有优势。



目前IBM可以说是SOA的主宰力量,我们可以看到它甚至在PHP方面也在大力推广SOA(IBM、Oracle 尝试把PHP 应用到SOA 之中),足见其野心之大。



我们看看IBM在PHP SOA方面的进展:

2005.7 IBM用PHP实现SDO并提交到PHP的PECL库

2005.12 IBM联合BEA、Oracle、IONA、SAP、Siebel、Sybase、Xcalia以及Zend公司,共同发布了两项针对SOA的重要编程模型规范——SCA(Service Component Architecture)和SDO(Service Data Object)。  注意,包括Zend公司。Zend和PHP的关系,就类似于Sun和Java。      

2006.3 PHP SDO v1.0.0 发布
2006.9 PHP SDO v1.0.4 发布
2006.9 PHP SCA v0.1.0发布

详情请参看:

SOA PHP Homepage



其实单独地说PHP中的SOA并不是一件很有意义的事,因为那只不过是一个Java的移植,以现在PHP5的面向对象编程模型,基本上已经足够胜任,甚至有些方面更方便,因为PHP是弱类型和动态类型的语言(Type Juggling),在实现SDO时,写代码不用像Java那么烦琐(不需要写那么多geter/seter)。但是实现之后,能否推广起来?这种“抽象、松散耦合和粗粒度”的软件架构能否真正被接受?

光靠IBM的力量(可能还有Oracle、Zend)来发展PHP SOA,可以说是没有可能成功的。当然话又说回来,如果SOA发展很好,PHP SOA也一定会流行起来,也会有更多技术厂家加入。一个技术能否被接受,能否流行,很多情况下还是要看大环境。
http://hi.baidu.com/nnffnn/blog/item/2eb8a38ff831a1eaf01f36b4.html
img.src = "http://ptlogin2.qq.com/getimage?aid=" + aid + "&" + Math.random();



$.getJSON('/con/info/act/getawardleft',{type:$.getURLParam('type'),clientTime:Date()},function(data){
                    $('#awardleft').text(data.awardleft);




$.get('/con/info/act/getmyscore',{clientTime:Date()},function(data){
                    $('#myscoreleft').text(data);
比较strlen和mb_strlen

当字符全是英文字符的时候,两者是一样。这里主要比较一下,中英文混排的时候,两个计算结果。(测试时编码方式是UTF8)

复制代码 代码如下:


$str=‘中文a字1符‘;

echo strlen($str);

echo ‘
‘;

echo mb_strlen($str,‘UTF8‘);

//输出结果

//14

//6

?>

结果分析:在strlen计算时,对待一个UTF8的中文字符是3个长度,所以“中文a字1符”长度是3*4+2=14

在mb_strlen计算时,选定内码为UTF8,则会将一个中文字符当作长度1来计算,所以“中文a字1符”长度是6

关于中英文混排串的占位符计算:

利用这两个函数则可以联合计算出一个中英文混排的串的占位是多少(一个中文字符的占位是2,英文字符是1),计算的方法是:如果一个混排字符串有a个中文,b个英文,占位是:

复制代码 代码如下:


$str=‘中文a字1符‘;

//计算如下

echo (strlen($str) + mb_strlen($str,‘UTF8‘)) / 2;

echo

//输出结果

//10

?>

例如 “中文a字1符” 的strlen($str)值是14,mb_strlen($str)值是6,则可以计算出“中文a字1符”的占位是10.

附网站的一篇文章:

还是有关中文的问题。PHP内置的字符串长度函数strlen无法正确处理中文字符串,它得到的只是字符串所占的字节数。对于GB2312的中文编码,strlen得到的值是汉字个数的2倍,而对于UTF-8编码的中文,就是3倍的差异了(在 UTF-8编码下,一个汉字占3个字节)。

采用mb_strlen函数可以较好地解决这个问题。mb_strlen的用法和 strlen类似,只不过它有第二个可选参数用于指定字符编码。例如得到UTF-8的字符串$str长度,可以用 mb_strlen($str,'UTF-8')。如果省略第二个参数,则会使用PHP的内部编码。内部编码可以通过 mb_internal_encoding()函数得到。需要注意的是,mb_strlen并不是PHP核心函数,使用前需要确保在php.ini中加载了php_mbstring.dll,即确保“extension=php_mbstring.dll”这一行存在并且没有被注释掉,否则会出现未定义函数的问题。
使用桥接模式的IP和网关并不是照搬就成,一是注意IP别冲突了,二是注意DNS还有网关别搞错了。 三是)如果有INODE啥的,可能还得设置一下才能让虚拟机上得了网。

对于IP设置静态、DNS和网关、子网掩码这块的一个设置,得从windows下的ipconfig /all进行查看并配置上IP设置静态、DNS和网关、子网掩码:

   IPv4 地址 . . . . . . . . . . . . : 10.10.0.94(首选)
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . : 10.10.0.2
   DNS 服务器  . . . . . . . . . . . : 123.125.81.6
C:\Users\Administrator>ipconfig /all
[codes=php]
无线局域网适配器 WLAN:

   连接特定的 DNS 后缀 . . . . . . . :
   描述. . . . . . . . . . . . . . . : Intel(R) Wireless-N 7265
   物理地址. . . . . . . . . . . . . : 48-45-20-CF-65-98
   DHCP 已启用 . . . . . . . . . . . : 是
   自动配置已启用. . . . . . . . . . : 是
   本地链接 IPv6 地址. . . . . . . . : fe80::a8aa:4679:3642:9444%18(首选)
   IPv4 地址 . . . . . . . . . . . . : 10.10.0.94(首选)
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   获得租约的时间  . . . . . . . . . : 2020年6月3日星期三 下午 8:39:19
   租约过期的时间  . . . . . . . . . : 2021年6月3日星期四 下午 8:39:19
   默认网关. . . . . . . . . . . . . : 10.10.0.2
   DHCP 服务器 . . . . . . . . . . . : 10.10.0.2
   DHCPv6 IAID . . . . . . . . . . . : 172508448
   DHCPv6 客户端 DUID  . . . . . . . : 00-01-00-01-24-36-C3-52-C8-5B-76-00-B0-AD
   DNS 服务器  . . . . . . . . . . . : 123.125.81.6
                                       202.106.196.115
   TCPIP 上的 NetBIOS  . . . . . . . : 已启用
[/codes]


VMware下Linux与真实主机共享上网的方法实现环境:

真实机系统为windows xp或者2003,使用adsl拨号上网,虚拟机版本为V5.5.2 Build 29772,虚拟机安装linux,有一块网卡,使用桥接模式。



1、在windows下,启用ICS。

选择adsl上网拨号后的连接,属性?高级?Internet连接共享?勾选“允许其他网络用户通过此计算机的internet连接共享”,家庭网络连接选“本地连接”。

2、在linux下,配置静态IP。

点主菜单?系统设置?网络,弹出“网络配置”,双击eth0,勾选“静态设置的ip地址”,

地址:192.168.0.21 (除192.168.0.1和255外,随便填)

子网掩码: 255.255.255.0

网关:192.168.0.1

确定

DNS项,主DNS填:192.168.0.1

都填完,记得保存。

3、编辑主机地址(实验时这步可以不用)

vi /etc/hosts

把127.0.0.1替换成前面设置的ip地址192.168.0.88

4、重起服务

service network restart 或者重启linux。

5、现在ping 一下 google.cn 看看,如果通就ok了,没有通的话,自己再检查上面的步骤是否出错。
今天在笔记本上试图虚拟一个64位LINUX系统,VMWARE报错。


i Z _ b S ^0c Q0

尝试虚拟的操作系统是Oracle的Enterprise Linux 4 for X86-64,因此在系统选项中选择了Other Linux 64bit,尝试系统后系统报错:

This CPU is VT-capable, but VT is not enabled (check your BIOS settings).
6M W k%~7f V _"s0You have configured this virtual machine as a 64-bit guest operating system. However, this host's CPU is not capable of running 64-bit virtual machines or this virtual machine has 64-bit support disabled.
Z H*C o L z)X:H ? i Y0For more detailed information, see http://www.vmware.com/info?id=152

点击确定,屏幕显示错误信息为:

Your CPU does not support long mode. Use a 32bit distribution.

对于这种情况,需要设置BIOS将Inter Virtualization Technology设置为ENABLE,然后重启系统,就可以了。

如果BIOS设置了没有类似的设置,那么系统就无法虚拟64位的系统了。
以下的方式能够帮助PHP应用程序改善其扩展性。

1)目标代码缓存

每一次服务器的请求都需要PHP引擎编译并执目标代码。如果这一过程被缓存的话用户会获得更快的相应脚本。

在Internet上有许多目标代码的缓存解决方案(免费或者是商业产品):

A) Ioncube:http://www.ioncube.com

B) Zend Encoder:http://www.zend.com/products/zend_safeguard

C) Turckl MMCache: http://freshmeat.net/projects/turck-mmcache/

2)模板引擎

模板引擎提供了缓存的另一种方式。内容缓存。 模板引擎适合于您的页面有比较多的静态数据的情况。缓存系统还提供了代码与html的分离,使得将来的维护与更新更加容易。大多数的PHP模板引擎都是免费的。

A) Smarty Templates: http://smarty.php.net/

B) Pear Templates: http://pear.php.net/package/html_template_it/redirected

C) PHP savant: http://phpsavant.com/yawiki/

3)分布式对象缓存系统

这一类型最广泛使用的系统是memcached(http://www.danga.com/memcached/)

这一类型的系统将大量的数据库数据缓存在一个内存池中。

他们网站有趣的一段摘录:

“Danga Interactive developed memcached to enhance the speed of LiveJournal.com, a site which was already doing 20 million+ dynamic page views per day for 1 million users with a bunch of webservers and a bunch of database servers. memcached dropped the database load to almost nothing, yielding faster page load times for users, better resource utilization, and faster access to the databases on a memcache miss.”

5)输出压缩

今天几乎所有的浏览器都支持一种叫做gzip压缩的东西。Gzip能够减少你的整体输出到80%,但代价是:处理器的资源消耗会增加10%。使用这一压缩类型的好处是不仅能够减少你的带宽,而且页面也会更快速的加载。

在PHP启用(在php.ini增加以下几行):

zlib.output_compression = On
zlib.output_compression_level = (level) (where level is 1-9. Youy may want to try different values to see what is best for your system).

如果你使用的是Apache,你可以启用mod_gzip模块.

6)其它有用的东西

当使用数据库时,只取出你实际需要的数据。这听起来很理所当然,但是我碰到项目的程序员经常使用(select * from mytable)而实际上他们可以使用(select fieldIneed from mytable)。

如果可能的话为数据库表建立索引

了解更多可以看这里:

An interesting blog article I found mentions many interesting tricks that can be used: http://ilia.ws/archives/12-PHP-Optimization-Tricks.html

an article on zend.com about measuring performance: http://www.zend.com/zend/trick/trick-optimizing-php.php

原文地址:http://www.whenpenguinsattack.com/2006/08/14/using-php-in-large-websites-redone/?artid=134
近半年在公司的pc上,用sz下载,rz上传老是文件会出问题。刚开始的时候,我一度怀疑是linux虚拟机,或者网络的问题,导致传输的过程中丢包,也没有仔细去探究。

最近发现,在任何服务器上做同样的操作都存在同样的问题,会严重的影响我的工作。为此,决定把真凶就揪出来。在下载文件前用md5sum计算它的md5值,然后用sz下载到本地的pc上,用windows下的md5sum再计算一次,发现下载到本地之后的md5值跟在服务器上是一样的。最后使用rz上传到服务器上再算一次,发现变化发生在我用rz上传到服务器之时。

缩小怀疑对象了。rz怎么会出问题。先看看SecureCRT中Session Option的设置,Xmodem/Zmodem这一栏中似乎也没有关于校验的设置。pqf说,会不会是上传的时候没有用binary的方式,他自己用rz,sz通常都会加上-b,-e的参数。
-b binary 用binary的方式上传下载,不解释字符为ascii
-e 强制escape 所有控制字符,比如Ctrl+x,DEL等

于是我老老实实的用rz -be的参数来上传文件,发现一切照旧。我开始怀疑是不是rz的bug,于是google之。Google来Google去都没有结果,更换搜索关键字都没有,比如"rz file changed“,"rz transfer size"。难道Google也有不灵光的时候?

好。先放一放吧。在今天下午,我又用rz上传一张图片,但是图片又因为发生了改变无法访问。正在垂头丧气的时候,突然发现问题所在!
在输入rz后,上传文件的对话框,我不知道什么时候勾选了Upload files as ASCII。这个该死的选项,去掉后再测试,一切都正常了。

关于rz,sz
rz,sz是利用[XYZ]modem协议来实现上传下载文件的工具。本身来说Zmodem协议算是一个古老的协议了,似乎用rz,sz也不能续传文件。但是它的好处在于方便,不需要server支持。只要服务器支持rz,sz(不支持的话,linux可以装lrzsz这个rpm包),客户端软件支持(SecureCRT这类的),就可以方便的两个命令实现本地pc和服务器之间的文件上传下载
分页: 188/272 第一页 上页 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 下页 最后页 [ 显示模式: 摘要 | 列表 ]