<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_Winner.Net@2007</title><subtitle type="text">专注与.Net技术</subtitle><id>http://feed.cnblogs.com/blog/u/17054/rss</id><updated>2011-11-17T01:53:10Z</updated><author><name>Winner.Net(2007)</name><uri>http://www.cnblogs.com/winner/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/winner/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/17054/rss"/><entry><id>http://www.cnblogs.com/winner/archive/2011/11/17/2252181.html</id><title type="text">centos 端口开放及关闭</title><summary type="text">之前有讲过公司新买的服务器使用的是CentOS 5.5，部署好Tomcat之后却发现输入114.80.*.*:8080(即ip:8080)却无法显示Tomcat默认的首页。因为以前部署在Win Server的VPS，Linux开发时也只用到localhost，所以就有点头大。 好吧，G一下网上有说是防火墙的问题，敲入 /etc/init.d/iptables stop 关闭之后再次查看114.80.*.*:8080(即ip:8080)发现果然成功。但是貌似安全隐患大大增加……使用 /etc/init.d/iptables status 查看防火墙信息，可以看到打开的端口。那么我们把需要使用的端</summary><published>2011-11-17T01:53:00Z</published><updated>2011-11-17T01:53:00Z</updated><author><name>Winner.Net(2007)</name><uri>http://www.cnblogs.com/winner/</uri></author><link rel="alternate" href="http://www.cnblogs.com/winner/archive/2011/11/17/2252181.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/winner/archive/2011/11/17/2252181.html"/><content type="html">&lt;div style="font-size: 14px" id="blogDetailDiv"&gt;&#xD;
&lt;div&gt;之前有讲过公司新买的服务器使用的是CentOS 5.5，部署好Tomcat之后却发现输入114.80.*.*:8080(即ip:8080)却无法显示Tomcat默认的首页。因为以前部署在Win Server的VPS，Linux开发时也只用到localhost，所以就有点头大。 &lt;/div&gt;&#xD;
&lt;div&gt;好吧，G一下网上有说是防火墙的问题，敲入 &lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="color: #0000ff"&gt;&lt;strong&gt;/etc/init.d/iptables stop&lt;/strong&gt;&lt;/span&gt; &lt;/div&gt;&#xD;
&lt;div&gt;关闭之后再次查看114.80.*.*:8080(即ip:8080)发现果然成功。但是貌似安全隐患大大增加&amp;#8230;&amp;#8230;使用 &lt;/div&gt;&#xD;
&lt;div&gt;&lt;strong&gt;&lt;span style="color: #0000ff"&gt;/etc/init.d/iptables status&lt;/span&gt;&lt;/strong&gt; &lt;/div&gt;&#xD;
&lt;div&gt;查看防火墙信息，可以看到打开的端口。那么我们把需要使用的端口打开应该是一个比较可行的办法了，命令如下： &lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="color: #0000ff"&gt;&lt;strong&gt;/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT&lt;/strong&gt;&lt;/span&gt; #8080为指定端口 &lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="color: #0000ff"&gt;&lt;strong&gt;/etc/rc.d/init.d/iptables save&lt;/strong&gt;&lt;/span&gt; #将更改进行保存 &lt;/div&gt;&#xD;
&lt;div&gt;&lt;strong&gt;&lt;span style="color: #0000ff"&gt;/etc/init.d/iptables restart&lt;/span&gt;&lt;/strong&gt; #重启防火墙以便改动生效，当然如果不觉得麻烦也可重启系统（命令：reboot） &lt;/div&gt;&#xD;
&lt;div&gt;当然了，还有另外直接在 &lt;span style="color: #0000ff"&gt;/etc/sysconfig/iptables&lt;/span&gt;中增加一行： &lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="color: #0000ff"&gt;&lt;strong&gt;-A RH-Firewall-1-INPUT -m state &amp;#8211;state NEW -m tcp -p tcp &amp;#8211;dport 8080 -j ACCEPT&lt;/strong&gt;&lt;/span&gt; &lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div&gt;&lt;span style="color: #0000ff"&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div&gt;永久关闭防火墙 &lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="color: #0000ff"&gt;&lt;strong&gt;chkconfig &amp;#8211;level 35 iptables off&lt;/strong&gt;&lt;/span&gt; #此方法源自网络，未实验，安全考虑拒绝使用此方法 &lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/winner/aggbug/2252181.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/winner/archive/2011/11/17/2252181.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/winner/archive/2011/11/17/2252177.html</id><title type="text">Can&amp;#39;t connect to MySQL server on &amp;#39;ip&amp;#39; (13)</title><summary type="text">I tried to connect to a remote mysql server ( 192.168.1.197 ) from a server with IP 192.168.1.193. My php connect: $host = &amp;quot;192.168.1.197&amp;quot;; $user = &amp;quot;root&amp;quot;; $pass = &amp;quot;rootpassword&amp;quot;; $database = &amp;quot;sample1&amp;quot;; #$con=@mysql_connect(&amp;quot;$host&amp;quot;,&amp;quot;$user&amp;quot;,</summary><published>2011-11-17T01:52:00Z</published><updated>2011-11-17T01:52:00Z</updated><author><name>Winner.Net(2007)</name><uri>http://www.cnblogs.com/winner/</uri></author><link rel="alternate" href="http://www.cnblogs.com/winner/archive/2011/11/17/2252177.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/winner/archive/2011/11/17/2252177.html"/><content type="html">&lt;div &gt;&#xD;
&lt;p&gt;&lt;strong&gt;&#xD;
&lt;div &gt;&lt;/div&gt;I tried to connect to a remote mysql server ( 192.168.1.197 ) from a server with IP 192.168.1.193. &lt;br /&gt;My php connect: &lt;br /&gt;$host = "192.168.1.197"; &lt;br /&gt;$user = "root"; &lt;br /&gt;$pass = "rootpassword"; &lt;br /&gt;$database = "sample1"; &lt;br /&gt;#$con=@mysql_connect("$host","$user","$pass") or die('Error connecting to mysql'); &lt;br /&gt;$con = mysql_connect("$host", "username", "password") or die(mysql_error()); &lt;br /&gt;$db="$database"; @mysql_select_db($db, $con); &lt;br /&gt;&lt;br /&gt;When i run this in the web, I'm getting the (13) error. I've search the web but could not find any concrete answer. &lt;br /&gt;&lt;br /&gt;If i type this in the command prompt: &lt;br /&gt;[root@localhost include]# mysql -u root -h 192.168.1.197 -p &lt;br /&gt;Enter password: &lt;br /&gt;Welcome to the MySQL monitor. Commands end with ; or \g. &lt;br /&gt;Your MySQL connection id is 71 &lt;br /&gt;Server version: 5.0.51a Source distribution &lt;br /&gt;&lt;br /&gt;Type 'help;' or '\h' for help. Type '\c' to clear the buffer. &lt;br /&gt;&lt;br /&gt;mysql&amp;gt; &lt;br /&gt;&lt;br /&gt;I was able to connect.. &lt;br /&gt;&lt;br /&gt;Can someone help me on this one? &lt;br /&gt;&lt;br /&gt;I even created a user rights for root ( both 193 &amp;amp; 197 ) &lt;br /&gt;User Host Password Global privileges Grant &lt;br /&gt;root 192.168.1.193 Yes ALL PRIVILEGES Yes &lt;br /&gt;root 192.168.1.197 Yes ALL PRIVILEGES Yes &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;div id="main-content" &gt;&#xD;
&lt;div style="line-height: 160%; font-size: 14px"&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;解决方法1、：setsebool -P httpd_can_network_connect_db=1&lt;/p&gt;&#xD;
&lt;p&gt;解决方法2、：修改/etc/selinux/config SELINUX=enforcing 为 SELINUX=disabled&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/winner/aggbug/2252177.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/winner/archive/2011/11/17/2252177.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/winner/archive/2011/11/17/2252180.html</id><title type="text">CentOS 6.0 系统 LAMP(Apache+MySQL+PHP)安装步骤</title><summary type="text">先来解释一下，什么是 LAMP。正如标题所言，LAMP 实际上就是 Linux、Apache、MySQL、PHP 四个名称的缩写，当然最后一个 “P” 还有其他说法是 Perl 或者 Python。不用多说了，本文讲解的就是 Linux、Apache、MySQL、PHP 这四个东西，所以就这样解释了。 自己很早就在做网站，最初玩的是 ASP，后来主要研究 .Net，也用 .Net 搞过类似的开发。但是自己最主要还是想把网站做起来，于是乎就将主要精力花在了网站运营上了，当然建站就选用了市面上成熟的一些 CMS 或者是博客程序。目前的 CMS 和博客程序实际上都可以融入到一起，因为其内容的表现形.</summary><published>2011-11-17T01:52:00Z</published><updated>2011-11-17T01:52:00Z</updated><author><name>Winner.Net(2007)</name><uri>http://www.cnblogs.com/winner/</uri></author><link rel="alternate" href="http://www.cnblogs.com/winner/archive/2011/11/17/2252180.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/winner/archive/2011/11/17/2252180.html"/><content type="html">&lt;div &gt;&#xD;
&lt;div &gt;&#xD;
&lt;p&gt;&lt;strong&gt;先来解释一下，什么是 LAMP。正如标题所言，LAMP 实际上就是 Linux、Apache、MySQL、PHP 四个名称的缩写，当然最后一个 &amp;#8220;P&amp;#8221; 还有其他说法是 Perl 或者 Python。不用多说了，本文讲解的就是 Linux、Apache、MySQL、PHP 这四个东西，所以就这样解释了。&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&#xD;
&lt;div  sizcache="2" sizset="8"&gt;&#xD;
&lt;div  sizcache="2" sizset="5"&gt;&#xD;
&lt;p&gt;自己很早就在做网站，最初玩的是 ASP，后来主要研究 .Net，也用 .Net 搞过类似的开发。但是自己最主要还是想把网站做起来，于是乎就将主要精力花在了网站运营上了，当然建站就选用了市面上成熟的一些 CMS 或者是博客程序。目前的 CMS 和博客程序实际上都可以融入到一起，因为其内容的表现形式上相当的接近，故选择哪一块来做，完全看自己的特长了。&lt;/p&gt;&#xD;
&lt;p&gt;由于 Linux 和 PHP 的免费，在国外是相当的流行。国内大部分主机都是 Windows 平台，而我学的 ASP 和 .Net 刚好能搭配运行起来。后来由于种种原因，我的网站都移民到了国外，而在国外找一个性价比好的 Windows 主机实在是件难事，不光语言上的阻碍，国外版权意识很好，所以很少有性价比好的 Windows 主机。我不得不转向了 Linux 平台。而且非常流行的 WordPress 吸引了我，故目前主要注意力就集中在 Linux 主机和 PHP 上。虽然自己对 PHP 基本不了解，呵呵。&lt;/p&gt;&#xD;
&lt;p&gt;虽然 Linux 平台上好的组件不止 Apache 一个，例如俄罗斯人开发的 Nginx，还有性能超强的 LiteSpeed 等等，这两者我都用过，前者以高效、资源占用低为特点，据说腾讯网就是基于此运行的，后者是以性能强大著称，同样据说这是 WordPress 官方推荐的用来运行 WordPress 最佳组件。但是呢，各种网上资料表明，虽然 Apache 性能、资源占用不如其他组件，但是 Apache 开发的目标就是以稳定为主。任何一个网站难道不是希望能够稳定运行？所以我还是选择学习 Apache 来作为网站的服务器环境。学会了一个，其他就能够举一反三了。&lt;/p&gt;&#xD;
&lt;p&gt;一般情况下，安装的都是最新的正式版，除非你有特殊需求，要安装指定的版本，本文暂不讨论。从最基础的开始，一点点完成一个可用的 Linux 主机。这里就开始介绍如何在 CentOS 6.0 上安装 LAMP 组件。经过如下语句安装，目前安装到的版本为：&lt;/p&gt;&#xD;
&lt;ul&gt;&lt;li&gt;PHP：5.3.2&lt;/li&gt;&lt;li&gt;Apache：2.2.15&lt;/li&gt;&lt;li&gt;MySQL：5.1.52&lt;/li&gt;&lt;/ul&gt;&#xD;
&lt;p&gt;一、安装 MySQL&lt;/p&gt;&#xD;
&lt;p&gt;首先来进行 MySQL 的安装。打开超级终端，输入：&lt;/p&gt;&lt;pre  name="code"&gt;[root@localhost ~]# yum install mysql mysql-server&lt;/pre&gt;&#xD;
&lt;p&gt;安装完毕，让 MySQL 能够随系统自动启动：&lt;/p&gt;&lt;pre  name="code"&gt;[root@localhost ~]# chkconfig --levels 235 mysqld on[root@localhost ~]# /etc/init.d/mysqld start&lt;/pre&gt;&#xD;
&lt;p&gt;设置 MySQL 数据 root 账户的密码：&lt;/p&gt;&lt;pre  name="code"&gt;[root@localhost ~]# mysql_secure_installation&lt;/pre&gt;&#xD;
&lt;p&gt;当出现如下提示时候直接按回车：&lt;/p&gt;&lt;pre  name="code"&gt;Enter current password for root&lt;/pre&gt;&#xD;
&lt;p&gt;出现如下再次回车：&lt;/p&gt;&lt;pre  name="code"&gt;Set root password? [Y/n]&lt;/pre&gt;&#xD;
&lt;p&gt;出现如下提示输入你需要设置的密码，回车后在输入一次确认：&lt;/p&gt;&lt;pre  name="code"&gt;New password:&lt;/pre&gt;&#xD;
&lt;p&gt;接下来还会有四个确认，分别是：&lt;/p&gt;&lt;pre  name="code"&gt;Remove anonymous users? [Y/n]Disallow root login remotely? [Y/n]Remove test database and access to it? [Y/n]Reload privilege tables now? [Y/n]&lt;/pre&gt;&#xD;
&lt;p&gt;直接回车即可。&lt;/p&gt;&#xD;
&lt;p&gt;二、安装 Apache 组件&lt;/p&gt;&#xD;
&lt;p&gt;由于 CentOS 已经封装了 Apache，直接运行安装：&lt;/p&gt;&lt;pre  name="code"&gt;[root@localhost ~]# yum install httpd&lt;/pre&gt;&#xD;
&lt;p&gt;同样配置系统让 Apache 随系统启动：&lt;/p&gt;&lt;pre  name="code"&gt;[root@localhost ~]# chkconfig --levels 235 httpd on&lt;/pre&gt;&#xD;
&lt;p&gt;配置完毕，启动 Apache：&lt;/p&gt;&lt;pre  name="code"&gt;[root@localhost ~]# /etc/init.d/httpd start&lt;/pre&gt;&#xD;
&lt;p&gt;此时已经可以访问你的服务器，不出意外的话，能够看到 &amp;#8220;Apache 2 Test Page powered by CentOS&amp;#8221; 的测试页面。注意，如果其他机器访问这台服务无法显示这个页面，而直接在这台服务器上可以访问的话，一般情况下是 CentOS 自带的防火墙禁止了。你只需要进入防火墙，将 &amp;#8220;WWW&amp;#8221; 对应的 &amp;#8220;80&amp;#8221; 端口打开即可。&lt;/p&gt;&#xD;
&lt;p align="center" sizcache="2" sizset="5"&gt;&lt;img style="background: none transparent scroll repeat 0% 0%" alt="" src="http://down.chinaz.com/upload/2011/9/4/20119414391756653.jpg" width="560" eventslistuid="e3" jquery151004081057653280612="6" loaded="true" orgsrc="http://down.chinaz.com/upload/2011/9/4/20119414391756653.jpg" original="/upload/2011/9/4/20119414391756653.jpg" quotetimer="8578" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;注意：在 CentOS 中 Apache 的默认根目录是 /var/www/html，配置文件 /etc/httpd/conf/httpd.conf。其他配置存储在 /etc/httpd/conf.d/ 目录。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;三、安装 PHP&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;输入如下指令安装 PHP:&lt;/p&gt;&lt;pre  name="code"&gt;[root@localhost ~]# yum install php&lt;/pre&gt;&#xD;
&lt;p&gt;需要重新启动 Apache 服务：&lt;/p&gt;&lt;pre  name="code"&gt;[root@localhost ~]# /etc/init.d/httpd restart&lt;/pre&gt;&#xD;
&lt;p&gt;&lt;strong&gt;四、测试 PHP 相关信息&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;这步实际上可以省略，但是为了测试是否安装成功，你可以新建一个 PHP 页面进行测试，使用 vim 编辑器新建：&lt;/p&gt;&lt;pre  name="code"&gt;[root@localhost ~]# vi /var/www/html/info.php&lt;/pre&gt;&#xD;
&lt;p&gt;按 &amp;#8220;i&amp;#8221; 键进行编辑，输入：&lt;/p&gt;&lt;pre  name="code"&gt;&amp;lt;?phpphpinfo();?&amp;gt;&lt;/pre&gt;&#xD;
&lt;p&gt;编辑完毕，按 &amp;#8220;ESC&amp;#8221; 键退出编辑模式，接着输入：&lt;/p&gt;&lt;pre  name="code"&gt;:wq&lt;/pre&gt;&#xD;
&lt;p&gt;然后回车，即保存并退出。&lt;/p&gt;&#xD;
&lt;p&gt;此时你可以访问你的站点地址，例如 &amp;#8220;http://192.168.1.2/info.php&amp;#8221;，查看是否能看到相关的 PHP 信息。&lt;/p&gt;&#xD;
&lt;p align="center" sizcache="2" sizset="6"&gt;&lt;img style="background: none transparent scroll repeat 0% 0%" alt="" src="http://down.chinaz.com/upload/2011/9/4/20119414391720627.jpg" eventslistuid="e4" jquery151004081057653280612="7" loaded="true" orgsrc="http://down.chinaz.com/upload/2011/9/4/20119414391720627.jpg" original="/upload/2011/9/4/20119414391720627.jpg" quotetimer="8580" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;看到这样的图，就说明 PHP 安装成功了。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;五、将 PHP 模块和 MySQL 模块关联起来&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;还需要将 PHP 和 MySQL 关联起来，才能正常工作。搜索模块：&lt;/p&gt;&lt;pre  name="code"&gt;[root@localhost ~]# yum search php&lt;/pre&gt;&#xD;
&lt;p&gt;安装相关模块：&lt;/p&gt;&lt;pre  name="code"&gt;[root@localhost ~]# yum install php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc&lt;/pre&gt;&#xD;
&lt;p&gt;需要重启 Apache 模块才能生效：&lt;/p&gt;&lt;pre  name="code"&gt;[root@localhost ~]# /etc/init.d/httpd restart&lt;/pre&gt;&#xD;
&lt;p&gt;再次刷新刚才建立的 &amp;#8220;info.php&amp;#8221; 页面，往下拉找到相关 MySQL 模块，看是否检测到相关信息。&lt;/p&gt;&#xD;
&lt;p align="center" sizcache="2" sizset="7"&gt;&lt;img style="background: none transparent scroll repeat 0% 0%" alt="" src="http://down.chinaz.com/upload/2011/9/4/20119414391869423.jpg" width="560" eventslistuid="e5" jquery151004081057653280612="8" loaded="true" orgsrc="http://down.chinaz.com/upload/2011/9/4/20119414391869423.jpg" original="/upload/2011/9/4/20119414391869423.jpg" quotetimer="8582" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;如果看到如上图相关信息，则说明 MySQL 工作正常了。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;六、总结&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;到这里就结束了，本文阐述了在 CentOS 6.0 系统下 LAMP 组件（Apache+MySQL+PHP） 的详细安装步骤，可以让更多新手熟悉服务器配置环境。&lt;/p&gt;&#xD;
&lt;p&gt;但是到这里，还只是将环境配置完毕，很多东西还有欠缺，而且还是一些重要的问题，例如目录的权限配置问题，或者是管理上的问题，像建立 FTP 等。这些内容随后会慢慢谈到。&lt;/p&gt;&#xD;
&lt;p&gt;本文转自：&lt;a href="http://www.laozhe.net/articles/302.html" target="_blank"&gt;http://www.laozhe.net/articles/302.html&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/winner/aggbug/2252180.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/winner/archive/2011/11/17/2252180.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/winner/archive/2011/11/17/2252175.html</id><title type="text">linux 开启 mount</title><summary type="text">linux 开启 mount 出错： rpc mount export: RPC: Unable to receive; errno = No route to host首先开启portmap 服务service portmap startiptables -A INPUT -p TCP --dport 111 -m state --state NEW -j ACCEPTiptables -A INPUT -p UDP --dport 111 -m state --state NEW -j ACCEPT编辑# vi /etc/sysconfig/nfsMOUNTD_PORT=&amp;quot;400</summary><published>2011-11-17T01:51:00Z</published><updated>2011-11-17T01:51:00Z</updated><author><name>Winner.Net(2007)</name><uri>http://www.cnblogs.com/winner/</uri></author><link rel="alternate" href="http://www.cnblogs.com/winner/archive/2011/11/17/2252175.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/winner/archive/2011/11/17/2252175.html"/><content type="html">&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;linux 开启 mount &lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;出错： rpc mount export: RPC: Unable to receive; errno = No route to host&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;首先开启portmap 服务&lt;br /&gt;service portmap start&lt;/p&gt;&#xD;
&lt;p&gt;iptables -A INPUT -p TCP --dport 111 -m state --state NEW -j ACCEPT&lt;br /&gt;iptables -A INPUT -p UDP --dport 111 -m state --state NEW -j ACCEPT&lt;/p&gt;&#xD;
&lt;p&gt;编辑# vi /etc/sysconfig/nfs&lt;br /&gt;MOUNTD_PORT="4002"&lt;br /&gt;STATD_PORT="4003"&lt;br /&gt;LOCKD_TCPPORT="4004"&lt;br /&gt;LOCKD_UDPPORT="4004"&lt;/p&gt;&#xD;
&lt;p&gt;service nfs start&lt;/p&gt;&#xD;
&lt;p&gt;iptables -A INPUT -p TCP --dport 2049 -m state --state NEW -j ACCEPT&lt;br /&gt;iptables -A INPUT -p UDP --dport 2049 -m state --state NEW -j ACCEPT&lt;br /&gt;iptables -A INPUT -p TCP --dport 4002:4004 -m state --state NEW -j ACCEPT&lt;br /&gt;iptables -A INPUT -p UDP --dport 4004 -m sate --state NEW -j ACCEPT&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;过程:&lt;/p&gt;&#xD;
&lt;p&gt;一：服务器端的设定&lt;/p&gt;&#xD;
&lt;p&gt;服务器端的设定都是在/etc/exports这个文件中进行设定的，设定格式如下：&lt;/p&gt;&#xD;
&lt;p&gt;欲分享出去的目录主机名称1或者IP1(参数1，参数2） 主机名称2或者IP2（参数3，参数4）&lt;/p&gt;&#xD;
&lt;p&gt;上面这个格式表示，同一个目录分享给两个不同的主机，但提供给这两台主机的权限和参数是不同的，所以分别设定两个主机得到的权限。&lt;/p&gt;&#xD;
&lt;p&gt;可以设定的参数主要有以下这些：&lt;/p&gt;&#xD;
&lt;p&gt;rw：可读写的权限；&lt;/p&gt;&#xD;
&lt;p&gt;ro：只读的权限；&lt;/p&gt;&#xD;
&lt;p&gt;no_root_squash：登入到NFS主机的用户如果是ROOT用户，他就拥有ROOT的权限，此参数很不安全，建议不要使用。&lt;/p&gt;&#xD;
&lt;p&gt;root_squash：在登入 NFS &lt;/p&gt;&#xD;
&lt;p&gt;nobody 身份；&lt;/p&gt;&#xD;
&lt;p&gt;all_squash：不管登陆NFS主机的用户是什么都会被重新设定为nobody。&lt;/p&gt;&#xD;
&lt;p&gt;anonuid：将登入NFS主机的用户都设定成指定的user id,此ID必须存在于/etc/passwd中。&lt;/p&gt;&#xD;
&lt;p&gt;anongid：同 anonuid，但是变成 group ID 就是了！&lt;/p&gt;&#xD;
&lt;p&gt;sync：资料同步写入存储器中。&lt;/p&gt;&#xD;
&lt;p&gt;async：资料会先暂时存放在内存中，不会直接写入硬盘。&lt;/p&gt;&#xD;
&lt;p&gt;insecure允许从这台机器过来的非授权访问。&lt;/p&gt;&#xD;
&lt;p&gt;例如可以编辑/etc/exports为：&lt;/p&gt;&#xD;
&lt;p&gt;/tmp　　　　　*(rw,no_root_squash)&lt;/p&gt;&#xD;
&lt;p&gt;/home/public　192.168.0.*(rw)　　*(ro)&lt;/p&gt;&#xD;
&lt;p&gt;/home/test　　192.168.0.100(rw)&lt;/p&gt;&#xD;
&lt;p&gt;/home/linux　*.the9.com(rw,all_squash,anonuid=40,anongid=40)&lt;/p&gt;&#xD;
&lt;p&gt;设定好后可以使用以下命令启动NFS:&lt;/p&gt;&#xD;
&lt;p&gt;/etc/rc.d/init.d/portmap start (在REDHAT中PORTMAP是默认启动的）&lt;/p&gt;&#xD;
&lt;p&gt;/etc/rc.d/init.d/nfs start&lt;/p&gt;&#xD;
&lt;p&gt;exportfs命令：&lt;/p&gt;&#xD;
&lt;p&gt;如果我们在启动了NFS之后又修改了/etc/exports，是不是还要重新启动nfs呢？这个时候我们就可以用exportfs命令来使改动立刻生效，该命令格式如下：&lt;/p&gt;&#xD;
&lt;p&gt;exportfs [-aruv]&lt;/p&gt;&#xD;
&lt;p&gt;-a ：全部mount或者unmount /etc/exports中的内容&lt;/p&gt;&#xD;
&lt;p&gt;-r ：重新mount /etc/exports中分享出来的目录&lt;/p&gt;&#xD;
&lt;p&gt;-u ：umount 目录&lt;/p&gt;&#xD;
&lt;p&gt;-v ：在 export的時候，将详细的信息输出到屏幕上。&lt;/p&gt;&#xD;
&lt;p&gt;具体例子：&lt;/p&gt;&#xD;
&lt;p&gt;[root @test root]# exportfs -rv &amp;lt;==全部重新 export 一次！&lt;/p&gt;&#xD;
&lt;p&gt;exporting 192.168.0.100:/home/test&lt;/p&gt;&#xD;
&lt;p&gt;exporting 192.168.0.*:/home/public&lt;/p&gt;&#xD;
&lt;p&gt;exporting *.the9.com:/home/linux&lt;/p&gt;&#xD;
&lt;p&gt;exporting *:/home/public&lt;/p&gt;&#xD;
&lt;p&gt;exporting *:/tmp&lt;/p&gt;&#xD;
&lt;p&gt;reexporting 192.168.0.100:/home/test to kernel&lt;/p&gt;&#xD;
&lt;p&gt;exportfs -au&amp;lt; ==全部都卸载了。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;客户段的操作：需要开启（portmap + nfslock ）&lt;/p&gt;&#xD;
&lt;p&gt;1、showmout命令对于NFS的操作和查错有很大的帮助，所以我们先来看一下showmount的用法&lt;/p&gt;&#xD;
&lt;p&gt;showmout&lt;/p&gt;&#xD;
&lt;p&gt;-a ：这个参数是一般在NFS SERVER上使用，是用来显示已经mount上本机nfs目录的cline机器。&lt;/p&gt;&#xD;
&lt;p&gt;-e ：显示指定的NFS SERVER上export出来的目录。&lt;/p&gt;&#xD;
&lt;p&gt;例如：&lt;/p&gt;&#xD;
&lt;p&gt;showmount -e 192.168.0.30&lt;/p&gt;&#xD;
&lt;p&gt;Export list for localhost:&lt;/p&gt;&#xD;
&lt;p&gt;/tmp *&lt;/p&gt;&#xD;
&lt;p&gt;/home/linux *.linux.org&lt;/p&gt;&#xD;
&lt;p&gt;/home/public (everyone)&lt;/p&gt;&#xD;
&lt;p&gt;/home/test 192.168.0.100&lt;/p&gt;&#xD;
&lt;p&gt;2、mount nfs目录的方法：&lt;/p&gt;&#xD;
&lt;p&gt;mount -t nfs hostname(orIP):/directory /mount/point&lt;/p&gt;&#xD;
&lt;p&gt;具体例子：&lt;/p&gt;&#xD;
&lt;p&gt;Linux: mount -t nfs 192.168.0.1:/tmp /mnt/nfs&lt;/p&gt;&#xD;
&lt;p&gt;Solaris:mount -F nfs 192.168.0.1:/tmp /mnt/nfs&lt;/p&gt;&#xD;
&lt;p&gt;BSD: mount 192.168.0.1:/tmp /mnt/nfs&lt;/p&gt;&#xD;
&lt;p&gt;本文出自 &amp;#8220;seven&amp;#8221; 博客，请务必保留此出处&lt;a href="http://liuyu.blog.51cto.com/183345/272466"&gt;http://liuyu.blog.51cto.com/183345/272466&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;linux 开启 mount &lt;/p&gt;&lt;img src="http://www.cnblogs.com/winner/aggbug/2252175.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/winner/archive/2011/11/17/2252175.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/winner/archive/2011/11/09/2242272.html</id><title type="text">PHP与MYSQL事务处理</title><summary type="text">PHP与MYSQL事务处理 /* MYSQL的事务处理主要有两种方法。 1、用begin,rollback,commit来实现 begin 开始一个事务 rollback 事务回滚 commit 事务确认 2、直接用set来改变mysql的自动提交模式 MYSQL默认是自动提交的，也就是你提交一个QUERY，它就直接执行！我们可以通过 set autocommit=0 禁止自动提交 set autoc...</summary><published>2011-11-09T03:32:00Z</published><updated>2011-11-09T03:32:00Z</updated><author><name>Winner.Net(2007)</name><uri>http://www.cnblogs.com/winner/</uri></author><link rel="alternate" href="http://www.cnblogs.com/winner/archive/2011/11/09/2242272.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/winner/archive/2011/11/09/2242272.html"/><content type="html">&lt;div&gt;PHP与MYSQL事务处理              			&lt;div id="appShareOpt"&gt;                                              &lt;/div&gt;               	                    &lt;p&gt;/*&lt;br /&gt; MYSQL的事务处理主要有两种方法。&lt;br /&gt; &lt;strong&gt;1、用begin,rollback,commit来实现&lt;/strong&gt;&lt;br /&gt; begin 开始一个事务&lt;br /&gt; rollback 事务回滚&lt;br /&gt; commit 事务确认&lt;br /&gt; &lt;strong&gt;2、直接用set来改变mysql的自动提交模式&lt;/strong&gt;&lt;br /&gt; MYSQL默认是自动提交的，也就是你提交一个QUERY，它就直接执行！我们可以通过&lt;br /&gt; set autocommit=0 禁止自动提交&lt;br /&gt; set autocommit=1 开启自动提交&lt;br /&gt; 来实现事务的处理。&lt;br /&gt; 当你用 set autocommit=0 的时候，你以后所有的SQL都将做为事务处理，直到你用commit确认或rollback结束。&lt;br /&gt; 注意当你结束这个事务的同时也开启了个新的事务！按第一种方法只将当前的作为一个事务！&lt;br /&gt; 个人推荐使用第一种方法！&lt;br /&gt; MYSQL中只有INNODB和BDB类型的数据表才能支持事务处理！其他的类型是不支持的！&lt;br /&gt; ***：一般MYSQL数据库默认的引擎是MyISAM,这种引擎不支持事务！如果要让MYSQL支持事务，可以自己手动修改:&lt;br /&gt; 方法如下：1.修改c:\appserv\mysql\my.ini文件，找到skip-InnoDB,在前面加上#，后保存文件。&lt;br /&gt; 2.在运行中输入：services.msc,重启mysql服务。&lt;br /&gt; 3.到phpmyadmin中，mysql-&amp;gt;show engines;(或执行mysql-&amp;gt;show variables like 'have_%'; ),查看InnoDB为YES,即表示数据库支持InnoDB了。&lt;br /&gt; 也就说明支持事务transaction了。&lt;br /&gt; 4.在创建表时，就可以为Storage Engine选择InnoDB引擎了。如果是以前创建的表，可以使用mysql-&amp;gt;alter table table_name type=InnoDB;&lt;br /&gt; 或 mysql-&amp;gt;alter table table_name engine=InnoDB;来改变数据表的引擎以支持事务。&lt;br /&gt; */&lt;br /&gt; &lt;strong&gt;/*************** transaction--1 ***************/&lt;/strong&gt;&lt;br /&gt; $conn = mysql_connect('localhost','root','root') or die ("数据连接错误!!!");&lt;br /&gt; mysql_select_db('test',$conn);&lt;br /&gt; mysql_query("set names 'GBK'"); //使用GBK中文编码;&lt;br /&gt; //开始一个事务&lt;br /&gt; mysql_query("BEGIN"); //或者mysql_query("START TRANSACTION");&lt;br /&gt; $sql = "INSERT INTO `user` (`id`, `username`, `sex`) VALUES (NULL, 'test1', '0')";&lt;br /&gt; $sql2 = "INSERT INTO `user` (`did`, `username`, `sex`) VALUES (NULL, 'test1', '0')";//这条我故意写错&lt;br /&gt; $res = mysql_query($sql);&lt;br /&gt; $res1 = mysql_query($sql2); &lt;br /&gt; if($res &amp;amp;&amp;amp; $res1){&lt;br /&gt; mysql_query("COMMIT");&lt;br /&gt; echo '提交成功。';&lt;br /&gt; }else{&lt;br /&gt; mysql_query("ROLLBACK");&lt;br /&gt; echo '数据回滚。';&lt;br /&gt; }&lt;br /&gt; mysql_query("END"); &lt;br /&gt; &lt;strong&gt;/**************** transaction--2 *******************/&lt;/strong&gt;&lt;br /&gt; /*方法二*/&lt;br /&gt; mysql_query("SET AUTOCOMMIT=0"); //设置mysql不自动提交，需自行用commit语句提交&lt;br /&gt; $sql = "INSERT INTO `user` (`id`, `username`, `sex`) VALUES (NULL, 'test1', '0')";&lt;br /&gt; $sql2 = "INSERT INTO `user` (`did`, `username`, `sex`) VALUES (NULL, 'test1', '0')";//这条我故意写错&lt;br /&gt; $res = mysql_query($sql);&lt;br /&gt; $res1 = mysql_query($sql2); &lt;br /&gt; if($res &amp;amp;&amp;amp; $res1){&lt;br /&gt; mysql_query("COMMIT");&lt;br /&gt; echo '提交成功。';&lt;br /&gt; }else{&lt;br /&gt; mysql_query("ROLLBACK");&lt;br /&gt; echo '数据回滚。';&lt;br /&gt; }&lt;br /&gt; mysql_query("END"); //事务处理完时别忘记mysql_query("SET AUTOCOMMIT=1");自动提交&lt;br /&gt; &lt;br /&gt; &lt;strong&gt;&lt;br /&gt; /******************对于不支持事务的MyISAM引擎数据库可以使用表锁定的方法：********************/&lt;/strong&gt;&lt;br /&gt; &lt;br /&gt; //MyISAM &amp;amp; InnoDB 都支持,&lt;br /&gt; /*&lt;br /&gt; LOCK TABLES可以锁定用于当前线程的表。如果表被其它线程锁定，则造成堵塞，直到可以获取所有锁定为止。&lt;br /&gt; UNLOCK TABLES可以释放被当前线程保持的任何锁定。当线程发布另一个LOCK TABLES时，或当与服务器的连接被关闭时，所有由当前线程锁定的表被隐含地解锁。&lt;br /&gt; */&lt;br /&gt; &lt;br /&gt; mysql_query("LOCK TABLES `user` WRITE");//锁住`user`表&lt;br /&gt; $sql = "INSERT INTO `user` (`id`, `username`, `sex`) VALUES (NULL, 'test1', '0')";&lt;br /&gt; $res = mysql_query($sql);&lt;br /&gt; if($res){&lt;br /&gt; echo '提交成功。!';&lt;br /&gt; }else{&lt;br /&gt; echo '失败!';&lt;br /&gt; }&lt;br /&gt; mysql_query("UNLOCK TABLES");//解除锁定&lt;/p&gt; MyISAM 是MySQL中默认的存储引擎，一般来说不是有太多人关心这个东西。决定使用什么样的存储引擎是一个很tricky的事情，但是还是值我们去研究一下，这里的文章只考虑 MyISAM 和InnoDB这两个，因为这两个是最常见的。&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; 下面先让我们回答一些问题：&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &amp;#9670;你的数据库有外键吗？&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &amp;#9670;你需要事务支持吗？&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &amp;#9670;你需要全文索引吗？&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &amp;#9670;你经常使用什么样的查询模式？&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &amp;#9670;你的数据有多大？&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; myisam只有索引缓存&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; innodb不分索引文件数据文件 innodb buffer&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; myisam只能管理索引，在索引数据大于分配的资源时，会由操作系统来cache；数据文件依赖于操作系统的cache。innodb不管是索引还是数据，都是自己来管理&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; 思考上面这些问题可以让你找到合适的方向，但那并不是绝对的。如果你需要事务处理或是外键，那么InnoDB  可能是比较好的方式。如果你需要全文索引，那么通常来说  MyISAM是好的选择，因为这是系统内建的，然而，我们其实并不会经常地去测试两百万行记录。所以，就算是慢一点，我们可以通过使用Sphinx从 InnoDB中获得全文索引。&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; 数据的大小，是一个影响你选择什么样存储引擎的重要因素，大尺寸的数据集趋向于选择InnoDB方式，因为其支持事务处理和故障恢复。数据库的在小决定了 故障恢复的时间长短，InnoDB可以利用事务日志进行数据恢复，这会比较快。而MyISAM可能会需要几个小时甚至几天来干这些事，InnoDB只需要 几分钟。&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; 您操作数据库表的习惯可能也会是一个对性能影响很大的因素。比如： COUNT() 在 MyISAM 表中会非常快，而在InnoDB  表下可能会很痛苦。而主键查询则在InnoDB下会相当相当的快，但需要小心的是如果我们的主键太长了也会导致性能问题。大批的inserts 语句在  MyISAM下会快一些，但是updates 在InnoDB 下会更快一些&amp;#8212;&amp;#8212;尤其在并发量大的时候。&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; 所以，到底你检使用哪一个呢？根据经验来看，如果是一些小型的应用或项目，那么MyISAM 也许会更适合。当然，在大型的环境下使用 MyISAM  也会有很大成功的时候，但却不总是这样的。如果你正在计划使用一个超大数据量的项目，而且需要事务处理或外键支持，那么你真的应该直接使用  InnoDB方式。但需要记住InnoDB 的表需要更多的内存和存储，转换100GB 的MyISAM 表到InnoDB  表可能会让你有非常坏的体验。&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; ===========================================================&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; MyISAM:这个是默认类型,它是基于传统的ISAM类型,ISAM是 Indexed Sequential Access Method  (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法.与其他存储引擎比较,MyISAM具有检查和修复表格的大多数工具.  MyISAM表格可以被压缩,而且它们支持全文搜索.它们不是事务安全的,而且也不支持外键。如果事物回滚将造成不完全回滚，不具有原子性。如果执行大量 的SELECT，MyISAM是更好的选择。&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; InnoDB:这种类型是事务安全的.它与BDB类型具有相同的特性,它们还支持外键.InnoDB表格速度很快.具有比BDB还丰富的特性,因此如果需 要一个事务安全的存储引擎,建议使用它.如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑，应该使用InnoDB表,&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; 对于支持事物的InnoDB类型的标，影响速度的主要原因是AUTOCOMMIT默认设置是打开的，而且程序没有显式调用BEGIN  开始事务，导致每插入一条都自动Commit，严重影响了速度。可以在执行sql前调用begin，多条sql形成一个事物（即使autocommit打 开也可以），将大大提高性能。&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; ===============================================================&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; InnoDB和MyISAM是在使用MySQL最常用的两个表类型，各有优缺点，视具体应用而定。下面是已知的两者之间的差别，仅供参考。&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; innodb&amp;nbsp;&amp;nbsp;  &lt;br /&gt; InnoDB 给 MySQL 提供了具有事务(commit)、回滚(rollback)和崩溃修复能力 (crash recovery  capabilities)的事务安全(transaction-safe (ACID compliant))型表。 InnoDB  提供了行锁(locking on row level)，提供与 Oracle 类型一致的不加锁读取(non- locking read in  SELECTs)。这些特性均提高了多用户并发操作的性能表现。在InnoDB表中不需要扩大锁定 (lock escalation)，因为  InnoDB 的列锁定(row level locks)适宜非常小的空间。 InnoDB 是 MySQL 上第一个提供外键约束(FOREIGN  KEY constraints)的表引擎。&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; InnoDB 的设计目标是处理大容量数据库系统，它的 CPU 利用率是其它基于磁盘的关系数据库引擎所不能比的。在技术上，InnoDB 是一套放在  MySQL 后台的完整数据库系统，InnoDB 在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。 InnoDB  把数据和索引存放在表空间里，可能包含多个文件，这与其它的不一样，举例来说，在 MyISAM 中，表被存放在单独的文件中。InnoDB  表的大小只受限于操作系统的文件大小，一般为 2 GB。&amp;nbsp;&amp;nbsp;  &lt;br /&gt; InnoDB所有的表都保存在同一个数据文件 ibdata1 中（也可能是多个文件，或者是独立的表空间文件）,相对来说比较不好备份，免费的方案可以是拷贝数据文件、备份 binlog，或者用 mysqldump。&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; MyISAM&amp;nbsp;&amp;nbsp;  &lt;br /&gt; MyISAM 是MySQL缺省存贮引擎 .&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; 每张MyISAM 表被存放在三个文件 。frm 文件存放表格定义。 数据文件是MYD (MYData) 。 索引文件是 MYI (MYIndex) 引伸。&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; 因为MyISAM相对简单所以在效率上要优于InnoDB..小型应用使用MyISAM是不错的选择.&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; MyISAM表是保存成文件的形式,在跨平台的数据转移中使用MyISAM存储会省去不少的麻烦&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; 以下是一些细节和具体实现的差别：&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; 1.InnoDB不支持FULLTEXT类型的索引。&amp;nbsp;&amp;nbsp;  &lt;br /&gt; 2.InnoDB 中不保存表的具体行数，也就是说，执行select count(*) from  table时，InnoDB要扫描一遍整个表来计算有多少行，但是MyISAM只要简单的读出保存好的行数即可。注意的是，当count(*)语句包含  where条件时，两种表的操作是一样的。&amp;nbsp;&amp;nbsp;  &lt;br /&gt; 3.对于AUTO_INCREMENT类型的字段，InnoDB中必须包含只有该字段的索引，但是在MyISAM表中，可以和其他字段一起建立联合索引。&amp;nbsp;&amp;nbsp;  &lt;br /&gt; 4.DELETE FROM table时，InnoDB不会重新建立表，而是一行一行的删除。&amp;nbsp;&amp;nbsp;  &lt;br /&gt; 5.LOAD TABLE FROM MASTER操作对InnoDB是不起作用的，解决方法是首先把InnoDB表改成MyISAM表，导入数据后再改成InnoDB表，但是对于使用的额外的InnoDB特性（例如外键）的表不适用。&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; 另外，InnoDB表的行锁也不是绝对的，如果在执行一个SQL语句时MySQL不能确定要扫描的范围，InnoDB表同样会锁全表，例如 update table set num=1 where name like &amp;#8220;%aaa%&amp;#8221;&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; 任何一种表都不是万能的，只用恰当的针对业务类型来选择合适的表类型，才能最大的发挥MySQL的性能优势。&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; ===============================================================&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; 以下是InnoDB和MyISAM的一些联系和区别！&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; 1. 4.0以上mysqld都支持事务，包括非max版本。3.23的需要max版本mysqld才能支持事务。&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; 2. 创建表时如果不指定type则默认为myisam，不支持事务。&amp;nbsp;&amp;nbsp;  &lt;br /&gt; 可以用 show create table tablename 命令看表的类型。&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; 2.1 对不支持事务的表做start/commit操作没有任何效果，在执行commit前已经提交，测试：&amp;nbsp;&amp;nbsp;  &lt;br /&gt; 执行一个msyql：&amp;nbsp;&amp;nbsp;  &lt;br /&gt; use test;&amp;nbsp;&amp;nbsp;  &lt;br /&gt; drop table if exists tn;&amp;nbsp;&amp;nbsp;  &lt;br /&gt; create table tn (a varchar(10)) type=myisam;&amp;nbsp;&amp;nbsp;  &lt;br /&gt; drop table if exists ty;&amp;nbsp;&amp;nbsp;  &lt;br /&gt; create table ty (a varchar(10)) type=innodb;&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; begin;&amp;nbsp;&amp;nbsp;  &lt;br /&gt; insert into tn values(&amp;#8216;a&amp;#8217;);&amp;nbsp;&amp;nbsp;  &lt;br /&gt; insert into ty values(&amp;#8216;a&amp;#8217;);&amp;nbsp;&amp;nbsp;  &lt;br /&gt; select * from tn;&amp;nbsp;&amp;nbsp;  &lt;br /&gt; select * from ty;&amp;nbsp;&amp;nbsp;  &lt;br /&gt; 都能看到一条记录&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; 执行另一个mysql：&amp;nbsp;&amp;nbsp;  &lt;br /&gt; use test;&amp;nbsp;&amp;nbsp;  &lt;br /&gt; select * from tn;&amp;nbsp;&amp;nbsp;  &lt;br /&gt; select * from ty;&amp;nbsp;&amp;nbsp;  &lt;br /&gt; 只有tn能看到一条记录&amp;nbsp;&amp;nbsp;  &lt;br /&gt; 然后在另一边&amp;nbsp;&amp;nbsp;  &lt;br /&gt; commit;&amp;nbsp;&amp;nbsp;  &lt;br /&gt; 才都能看到记录。&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; 3. 可以执行以下命令来切换非事务表到事务（数据不会丢失），innodb表比myisam表更安全：&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &amp;nbsp;&amp;nbsp;  alter table tablename type=innodb;&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; 3.1 innodb表不能用repair table命令和myisamchk -r table_name&amp;nbsp;&amp;nbsp;  &lt;br /&gt; 但可以用check table，以及mysqlcheck [OPTIONS] database [tables]&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; ==============================================================&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; mysql中使用select for update的必须针对InnoDb，并且是在一个事务中，才能起作用。&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; select的条件不一样，采用的是行级锁还是表级锁也不一样。&amp;nbsp;&amp;nbsp;  &lt;br /&gt; 转&lt;a&gt;http://www.neo.com.tw/archives/900&lt;/a&gt; 的说明&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; 由于InnoDB 预设是Row-Level Lock，所以只有「明确」的指定主键，MySQL 才会执行Row lock (只锁住被选取的资料例) ，否则MySQL 将会执行Table Lock (将整个资料表单给锁住)。&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; 举个例子:&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; 假设有个表单products ，里面有id 跟name 二个栏位，id 是主键。&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; 例1: (明确指定主键，并且有此笔资料，row lock)&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; SELECT * FROM products WHERE id=&amp;#8217;3&amp;#8242; FOR UPDATE;&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; 例2: (明确指定主键，若查无此笔资料，无lock)&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; SELECT * FROM products WHERE id=&amp;#8217;-1&amp;#8242; FOR UPDATE;&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; 例2: (无主键，table lock)&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; SELECT * FROM products WHERE name=&amp;#8217;Mouse&amp;#8217; FOR UPDATE;&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; 例3: (主键不明确，table lock)&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; SELECT * FROM products WHERE id&amp;lt;&amp;gt;&amp;#8217;3&amp;#8242; FOR UPDATE;&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; 例4: (主键不明确，table lock)&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; SELECT * FROM products WHERE id LIKE &amp;#8217;3&amp;#8242; FOR UPDATE;&amp;nbsp;&amp;nbsp;  &lt;br /&gt; &lt;br /&gt; 注1:&amp;nbsp;&amp;nbsp;  &lt;br /&gt; FOR UPDATE 仅适用于InnoDB，且必须在交易区块(BEGIN/COMMIT)中才能生效&lt;/div&gt;&lt;img src="http://www.cnblogs.com/winner/aggbug/2242272.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/winner/archive/2011/11/09/2242272.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/winner/archive/2011/10/02/2198073.html</id><title type="text">型B2C电子商务网站组织架构分析</title><summary type="text">大型B2C电子商务网站组织架构分析 电子商务这几年可以说风行世界，表现出强大的生命力。在中 国，淘宝、拍拍的年交易额高达数千亿；京东的销售足以同苏宁、国美分庭抗礼；当当网市值百亿美金；还有凡客、乐淘、麦包包、红孩子等等网站也做得热火朝 天。无疑，电子商务必将成为未来商业发展的趋势。但是，要怎样才能做好电子商务呢？ 要做好电子商务，最重要的是两样东西：一个是资金，还有一个是团队。能否组建起一个高素质的电子商务团队，决定了你能在电子商务这条路上走多远！一个结构完整的B2C电子商务团队一般可分为七个部门：客服部、市场部、采购及物流部、技术部、网站运营部、财务部和人力资源部。 其中，...</summary><published>2011-10-02T09:57:00Z</published><updated>2011-10-02T09:57:00Z</updated><author><name>Winner.Net(2007)</name><uri>http://www.cnblogs.com/winner/</uri></author><link rel="alternate" href="http://www.cnblogs.com/winner/archive/2011/10/02/2198073.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/winner/archive/2011/10/02/2198073.html"/><content type="html">&lt;div&gt;&lt;p&gt;&lt;strong&gt;大型B2C电子商务网站组织架构分析&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;div&gt; 			　　&lt;p&gt;&lt;/p&gt; &lt;div&gt;&lt;center&gt;&lt;img alt="B2C电子商务网站组织架构" src="http://www.one-link.cn/uploads/110524/1_165203_1.jpg" height="207" border="0" width="381" /&gt;&lt;br /&gt; &lt;br /&gt; &lt;/center&gt;&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;电子商务这几年可以说风行世界，表现出强大的生命力。在中 国，淘宝、拍拍的年交易额高达数千亿；京东的销售足以同苏宁、国美分庭抗礼；当当网市值百亿美金；还有凡客、乐淘、麦包包、红孩子等等网站也做得热火朝 天。无疑，电子商务必将成为未来商业发展的趋势。但是，要怎样才能做好电子商务呢？&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;要做好电子商务，最重要的是两样东西：一个是资金，还有一个是团队。能否组建起一个高素质的电子商务团队，决定了你能在电子商务这条路上走多远！一个结构完整的B2C电子商务团队一般可分为七个部门：客服部、市场部、采购及物流部、技术部、网站运营部、财务部和人力资源部。&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;其中，客服部的职能就是客服服务、客户咨询、客服培训和客服考核等，通过各种方式提高用户满意度、订单转化率和平均订单金额；技术部负责网站、呼叫中心（&lt;span&gt;Call   Center）和电子商务系统的建设，以及采购系统、仓储系统、CRM系统和各种系统之间的对接等；市场部负责互联网和其他媒体推广、品牌宣传和公关、网 站合作、支付合作、网站策划、CRM营销（会员制分级、EDM营销、会员合作营销、数据挖掘等）；采购及物流部负责根据采购名单进行招标和采购、网站仓储 在全国的布局和设计、制定仓储标准和物流配送标准、设计仓储管理系统、选择物流配送合作伙伴、设计产品配送包装、根据订单的进行配送、并根据销售状况调节 产品在不同仓储之间的库存等，顺便说一下，采购和物流其实是可以分开的，在规模到达一定程度以后，会裂变成采购部和仓储物流部两个部门；网站运营部负责制 定产品定价，设计产品文案，拍摄并处理产品图片，分析各类型产品，制定采购名单，优化购物流程，提高用户的购物体验，并根据销售状况制定促销方案，配合市 场部完成对外推广的促销宣传。以下是各相关部门的具体职能及运作说明：&lt;/span&gt;&lt;/div&gt; &lt;div style="background: white; text-indent: 21.1pt" align="left"&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/div&gt; &lt;div style="text-indent: 24.1pt" align="left"&gt;&lt;strong&gt;&lt;span style="font-size: 12pt"&gt;一：客服部职能及运作&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;客服部又分为客服运营、客服培训和绩效及稽核三个组，其中客服运营是核心，其他两个组主要是辅助和配合客服运营。&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 21.1pt" align="left"&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;strong&gt;、客服运营组&lt;/strong&gt;&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;负责咨询电话、客服服务电话和在线客服的咨询、产品咨询、订单处理、售后服务、客户主动咨询、客户回访、大客户挖掘和营销等服务，下设客户主管，客户主管下设客服专员。&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 21.1pt" align="left"&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;strong&gt;、客服培训组&lt;/strong&gt;&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;负责制定客服手册（咨询手册、产品咨询手册、回访手册、在线咨询手册等），培训客服技巧和技能，纠正客服不良习惯，提高服务满意度。&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 23.2pt" align="left"&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;strong&gt;、绩效及稽核组&lt;/strong&gt;&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;负责监督检查客服质量，降低不良咨询率，对客服员工进行工作考核和测评。&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 21.1pt" align="left"&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/div&gt; &lt;div style="text-indent: 24.1pt" align="left"&gt;&lt;strong&gt;&lt;span style="font-size: 12pt"&gt;二：市场部职能及运作&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt; &lt;div style="text-indent: 21.1pt" align="left"&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;市场部的职能包括两块，首先是负责对外的合作、推广和宣传工作，包括搜索引擎营销、&lt;span&gt;EDM 营销、网站合作、媒体合作、新闻炒作、口碑合作、活动及研讨会等；其次是负责研究分析CRM体系（包括会员级别、积分机制、客户活跃机制、沟通机制等）， 优化购物流程，提高用户购物体验，制定CRM营销战略，分析销售数据，研究用户购买行为，最终提高订单转化率。市场部分为三个组：媒介推广、活动公关和营 销分析。&lt;/span&gt;&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 21.1pt" align="left"&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;strong&gt;、媒介推广&lt;/strong&gt;&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;主要是对外的付费推广，目的是提高网站的有效访问量，提高推广的有效性和订单转化率，媒介推广策略必须结合营销分析、网站运营和促销策略。媒介推广又分为三部分：&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;（1）支付合作&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;包括跟支付宝、 财付通、银联在线、网银等各种方式的网络支付合作，也包括货到付款业务、手机支付、信用卡等各种形式的新业务支付模式合作。&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;（2）网络推广&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;包括搜索引擎营销（百度和谷歌为主）、EMD合作营销、门户和垂直网站推广合作、CPS投放合作等，在推广上不断创新，提高合作的深度；&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;（3）投产分析&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;分析各种投放渠道的效果，不断调整投放策略，不断提高投产比。&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 21.1pt" align="left"&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;strong&gt;、活动公关&lt;/strong&gt;&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;B2C电子商务网站的媒体曝光率和展示率直接影响用户转化率 和忠诚度，所以需要设立活动公关组，通过新闻撰写、活动策划、品牌公关、高层访谈和口碑营销等各种方式不断向用户渗透网站品牌理念。活动公关组可分为新闻 公关（含撰写、投放和媒体联络）、品牌公关（品牌定位、口碑营销、危机处理等）和活动策划执行三个小组。&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 15.2pt" align="left"&gt;（1）新闻公关&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;主要寻找新闻话题，进行新闻的采编工作或引导媒体对网站相关热点进行报道，保持媒体对网站的持续性报道。&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 15.2pt" align="left"&gt;（2）品牌公关组&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;主要分析研究品牌定位，处理危机事件，协助新闻公关组合活动策划执行组确定新闻和活动的品牌涵义，组织相关人员针对论坛和博客的网络口碑营销，不断释放网站的品牌信号，加深网民对网站的了解。&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 15.2pt" align="left"&gt;（3）活动策划执行组&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;负责策划、参与各种活动，包括行业研讨会、新闻发布会、高层访谈（含网络访谈、电视访谈、报纸访谈等），组织安排相关负责人参与，并与其沟通确定发布文稿（word、ppt、演讲大纲等）。&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 21.1pt" align="left"&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;strong&gt;、营销分析（略）&lt;/strong&gt;&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 24.1pt" align="left"&gt;&lt;strong&gt;&lt;span style="font-size: 12pt"&gt;三：网站运营部职能及运作&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt; &lt;div style="text-indent: 21.1pt" align="left"&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;网站运营部负责分析并确定产品目录、预测和计划产品销量、确定采购量、制定销售价格、控制产品毛利润，根据销售情况确定网站各网页的陈列展示，策划设计各种促销活动（根据产品、会员、节假日等），利用EDM系统、电话客服、网站展示位、网络推广资源等各种方式提高促销效果。网站运营部分为四个组：产品分析组、销售组、促销组和策划编辑组。&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 21.1pt" align="left"&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;strong&gt;、产品分析组&lt;/strong&gt;&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;产品分析组有三个职能：产品分析筛选、产品定价和销售分析。&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 15.2pt" align="left"&gt;（1）产品分析筛选&lt;/div&gt; &lt;div align="left"&gt;分析各个种类的产品，确定网站主推产品名单，预测产品销售额，跟采购部协商确定采购量，并根据销售情况不断调整。&lt;/div&gt; &lt;div align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 15.2pt" align="left"&gt;（2）产品定价&lt;/div&gt; &lt;div align="left"&gt;根据传统渠道价格、竞争对手价格、采购成本等各种因素确定网站产品定价，保持产品竞争力和毛利润。&lt;/div&gt; &lt;div align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 15.2pt" align="left"&gt;（3）销售分析&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;分析网站各种产品的销售情况，将产品分为若干等级：畅销品（现金牛）、滞销品（瘦狗）、潜力产品（明星）和不确定产品（问号）；寻找并确定畅销品的品种，尽快用促销等方式消化滞销品的库存，通过内外部资源提升潜力产品的销量，分析研究不确定产品的原因。&lt;/div&gt; &lt;div style="text-indent: 10pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 20.65pt" align="left"&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;strong&gt;、产品销售组&lt;/strong&gt;&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;主要负责产品的销售、产品在网站的陈列展示，还要负责与促销组确定产品促销方案，调配促销产品和促销资源，也要负责与市场部联络，确定在推广过程中的策略，搜索引擎关键词和描述，以及EMD营销策略， &lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 21.1pt" align="left"&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;strong&gt;、策划和编辑组&lt;/strong&gt;&lt;/div&gt; &lt;div align="left"&gt;负责产品的文案和图片处理，网站的功能策划、板块设置和网站建设，具体可分为三个职能：网站策划、网站编辑和美工摄影。&lt;/div&gt; &lt;div align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;（1）网站策划&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;负责全站的网站建设、改版、功能设计、购物流程优化等等。&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;（2）网站编辑&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;负责产品文案撰写、促销文案撰写、网站各频道的内容编写、专题策划和编辑等等。&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 20.15pt" align="left"&gt;（3）美工及摄影&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;负责产品的图片拍摄和处理、网站页面设计、促销和产品展示页面、flash的设计等。&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 21.1pt" align="left"&gt;&lt;strong&gt;4&lt;/strong&gt;&lt;strong&gt;、促销组&lt;/strong&gt;&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;负责策划并执行促销策略，与市场部协调推广资源（搜索引擎、EDM、门户和垂直网站等）推进促销宣传，与销售组协调促销方案和促销产品，与策划编辑组配合完成促销文案、促销图片、EDM投放和flash展示等。&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;任何B2C电子商务网站的促销策略都很重要，国内的当当和京东商城就将促销作为拉动销量的重要手段。&lt;/div&gt; &lt;div style="text-indent: 21.1pt" align="left"&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/div&gt; &lt;div style="text-indent: 24.1pt" align="left"&gt;&lt;strong&gt;&lt;span style="font-size: 12pt"&gt;四：采购及物流部职能及运作&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt; &lt;div style="text-indent: 21.1pt" align="left"&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;采购及物流部负责产品的采购，各类产品在全国的仓储布局、调 整和管理，网站配送合作和订单配送工作。具体为：与网站运营部确定采购名单，根据名单筛选供应商，争取最低采购价格，负责根据重点销售区域确定网站的仓储 中心规划，各个仓储中心的管理，各个种类产品在不同仓储中心的调配，确定快递配送合作伙伴，制定配送标准，设计包装规格，制定订单配送管理规则。从职能 上，采购及物流部可分为三个组：采购组、仓储组和配送组。&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 21.1pt" align="left"&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;strong&gt;、采购组&lt;/strong&gt;&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;负责在采购过程中与网站运营部密切合作，制定合作经销商名单，争取最低采购价格，尽可能利用网站及推广资源，争取以资源换价格。&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 21.1pt" align="left"&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;strong&gt;、仓储组&lt;/strong&gt;&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;又分为仓储运营和供应链优化两个职能。&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;（1）仓储运营&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;负责仓储中心的布局、具体仓储管理、产品在各个中心的库存调配、产品从采购到入库的管理、仓储管理系统的设计和改进等。&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;（2）供应链优化&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;负责从采购、产品入库、产品销售、订单配送、到用户收到产品的供应链过程中的优化，尽可能缩短仓储周转周期，缩短订单配送周期（订单处理、订单分拣、订单包装、快递配送），提高资金周转率和仓储利用率。&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 21.1pt" align="left"&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;strong&gt;、配送组&lt;/strong&gt;&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;分为订单处理、包装及配送和配送稽核三个职能。&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;（1）订单处理&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;负责对用户提交的订单进行审核，对地址不清晰、电话格式不对、订单信息不完全、恶意订单等进行确认。&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;（2）包装及配送&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;负责产品的分拣和包装，订单的配送，配送标准的制定和优化，包装的设计，配送合作伙伴的选择等。&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;（3）配送稽核&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;负责对配送的质量进行监督，提高配送服务的水平，提高配送的用户满意度，对配送合作伙伴（或自身配送人员）的不恰当配送行为进行处罚和处理。&lt;/div&gt; &lt;div style="text-indent: 21.1pt" align="left"&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/div&gt; &lt;div style="text-indent: 24.1pt" align="left"&gt;&lt;strong&gt;&lt;span style="font-size: 12pt"&gt;五：技术部职能及运作&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt; &lt;div style="text-indent: 21.1pt" align="left"&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;技术部负责网站建设和系统开发。包括B2C网站的网站架构和技术开发，CRM系统、Call_Center系统、采购和仓储系统、订单管理系统等系统的策划、实施和调整，服务器和网络运营商的选择和管理等。技术部从职能上分为三个组：网站开发组、系统开发组和系统维护组。&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 21.1pt" align="left"&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;strong&gt;、网站开发组&lt;/strong&gt;&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;主要负责B2C网站和其他相关网站的开发工作，具体分为网站架构、网站开发和测试、页面设计和SEO优化等：&lt;/div&gt; &lt;div style="text-indent: 10pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;（1）网站架构人员&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;负责与网站运营部和市场部沟通网站功能策划，确定网站架构方案，并与开发和测试人员共同完成网站的建设和改版工作。&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;（2）网站开发和测试&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;负责根据网站架构和功能需求编写代码，完成网站技术开发和改版工作，并通过不断测试提高用户体验，根除网站漏洞。&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;（3）页面设计人员&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;负责网站页面的设计和改版工作。&lt;/div&gt; &lt;div style="text-indent: 10pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;（4）SEO优化&lt;/div&gt; &lt;div style="text-indent: 20.35pt" align="left"&gt;负责针对搜索引擎开展的页面优化，使得网站关键词得以搜索排名提前，这跟网站框架、页面设计和文案相关。&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 21.1pt" align="left"&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;strong&gt;、系统开发组&lt;/strong&gt;&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;主要负责网站相关系统的开发工作。具体为：客户关系管理系统（CRM系统）、呼叫中心（Call_Center系统，用于客服管理）、采购和仓储管理系统（产品的采购和供应商、不同仓储中心的库存情况）和订单处理系统（订单管理、配送管理、收款、退换货等）。&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;系统开发和网站开发代码和技术都不同，所以要分开团队。系统开发职能又分为需求分析、系统分析（系统框架）和软件开发测试三个部分。&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;其中，需求分析负责与各部门人员沟通，分析各系统的使用需求，完成各系统的整体需求分析工作；系统分析负责按照需求分析结果设计数据库模型和系统模型，最终由软件开发测试人员完成开发，并由三大职能的人员一起进行测试。&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="text-indent: 21.1pt" align="left"&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;strong&gt;、系统维护组&lt;/strong&gt;&lt;/div&gt; &lt;div style="text-indent: 21pt" align="left"&gt;主要负责服务器管理、网络管理和系统调试等基础工作。&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/winner/aggbug/2198073.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/winner/archive/2011/10/02/2198073.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/winner/archive/2010/05/09/1730925.html</id><title type="text">转 PHP _construct _destory _call _get _set等</title><summary type="text">PHP _construct _destory _call _get _set等 PHP 技术 2009-12-23 22:40:08 阅读129 评论0  字号：大中小  1，__construct()  当实例化一个对象的时候，这个对象的这个方法首先被调用。 class Test  { function  __construct() { echo "before"; } } $t = new ...</summary><published>2010-05-09T02:34:00Z</published><updated>2010-05-09T02:34:00Z</updated><author><name>Winner.Net(2007)</name><uri>http://www.cnblogs.com/winner/</uri></author><link rel="alternate" href="http://www.cnblogs.com/winner/archive/2010/05/09/1730925.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/winner/archive/2010/05/09/1730925.html"/><content type="html">&lt;p&gt;&lt;strong&gt;PHP _construct _destory _call _get _set等&lt;/strong&gt;&lt;/p&gt; &lt;p clearfix="" nbw-act="" fc06=""&gt;&lt;span&gt; &lt;a target="_blank" m2a="" href="http://mikelee559.blog.163.com/blog/#m=0&amp;amp;t=1&amp;amp;c=fks_087069085083080065081082084095085084088071093083095071086"&gt;PHP 技术&lt;/a&gt; 2009-12-23 22:40:08 阅读&lt;span id="$_spanReadCount"&gt;129&lt;/span&gt; 评论&lt;span id="$_spanCommentCount"&gt;0&lt;/span&gt; &lt;/span&gt; &lt;span fc07="" ztag=""&gt;字号：&lt;span sep="" fc04=""&gt;大&lt;/span&gt;&lt;span sep="" fc04=""&gt;中&lt;/span&gt;&lt;span ul="" fc04="" selected="" js-fcurrent="" fc05=""&gt;小&lt;/span&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;1，__construct()  当实例化一个对象的时候，这个对象的这个方法首先被调用。&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;class Test&lt;/p&gt;  &lt;p style="text-indent: 2em;"&gt;{&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;function  __construct()&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;{&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;echo "before";&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;}&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;}&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;$t = new Test();&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;输出是：&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;start&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;&amp;lt;?&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;class Test&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;{&lt;/p&gt;  &lt;p style="text-indent: 2em;"&gt;function Test()&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;{&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;echo  "end2";&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;}&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;function __construct()&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;{&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;echo "end";&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;}&lt;/p&gt;  &lt;p style="text-indent: 2em;"&gt;}&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;$t =  new Test();&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;//输出end&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;?&amp;gt;&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;我们知道 php5对象模型 &lt;a p=""&gt;&amp;lt; ，所以__construct()作为类的默认的构造函数 而不会调用同类名函数  和__construct()方法的话,php5会默认调用构造函数 ，那么如果我们同时定义构造函数 是类的构造函数 的函数&amp;gt; &lt;/a&gt;&lt;/p&gt;  &lt;p style="text-indent: 2em;"&gt;2,__destruct() 当删除一个对象或对象操作终止的时候，调用该方法。&lt;/p&gt;  &lt;p style="text-indent: 2em;"&gt;class Test&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;{&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;function __destruct()&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;{&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;echo "end";&lt;/p&gt;  &lt;p style="text-indent: 2em;"&gt;}&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;}&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;$t = new Test();&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;将会输出&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;end&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;我们就可以在对象操作结束的时候进行释放资源之类的操作&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;3,__get() 当试图读取一个并不存在的属性的时候被调用。&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;如果试图读取一个对象并不存在的属性的时候，PHP就会给出错误信息。如果在类里添加__get方 法，并且我们可以用这个函数 实现类似java中反射的各种操作。&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;class  Test&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;{&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;public  function __get($key)&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;{&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;echo $key . " 不存在";&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;}&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;}&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;$t = new Test();&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;echo  $t-&amp;gt;name;&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;就会输出：&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;name 不存在&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;4,__set()  当试图向一个并不存在的属性写入值的时候被调用。&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;class Test&lt;/p&gt;  &lt;p style="text-indent: 2em;"&gt;{&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;public  function __set($key,$value)&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;{&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;echo '对'.$key . "附值".$value;&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;}&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;}&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;$t = new Test();&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;$t-&amp;gt;name = "aninggo";&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;就会输出：&lt;/p&gt;  &lt;p style="text-indent: 2em;"&gt;对 name 附值 aninggo&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;5,__call() 当试图调用一个对象并不存在的方法时，调用该方法。&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;class Test&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;{&lt;/p&gt;  &lt;p style="text-indent: 2em;"&gt;public function __call($Key, $Args)&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;{&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;echo  "您要调用的 {$Key} 方法不存在。你传入的参数是：" . print_r($Args, true);&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;}&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;}&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;$t = new Test();&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;$t-&amp;gt;getName(aning,go);&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;程序将会输出：&lt;/p&gt;  &lt;p style="text-indent: 2em;"&gt;您要调用的 getName 方法不存在。参数是：Array&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;(&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;[0] =&amp;gt;  aning&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;[1] =&amp;gt; go&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;)&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;6,__toString()  当打印一个对象的时候被调用&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;这个方法类似于java的toString方法，当 我们直接打印对象的时候回调用这个函数 &lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;class Test&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;{&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;public  function __toString()&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;{&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;return "打印 Test";&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;}&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;}&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;$t = new Test();&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;echo $t; &lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;运行echo $t;的时候，就会调用$t-&amp;gt;__toString();从而输出&lt;/p&gt;  &lt;p style="text-indent: 2em;"&gt;打印 Test&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;7,__clone()  当对象被克隆时，被调用&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;class Test&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;{&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;public  function __clone()&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;{&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;PHP _construct _destory _call _get _set等&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;&lt;a target="_blank" href="http://352202405.blog.163.com/blog/static/123132105200973115256655/#"&gt;计 算机技术&lt;/a&gt; &amp;nbsp;&amp;nbsp;2009-08-03 11:52 &amp;nbsp;&amp;nbsp;阅读&lt;nobr&gt;111&lt;/nobr&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;评论&lt;nobr&gt;0&lt;/nobr&gt; &amp;nbsp; &lt;/p&gt;  &lt;p style="text-indent: 2em;"&gt;字号： &lt;a target="_blank" href="http://352202405.blog.163.com/blog/static/123132105200973115256655/#"&gt;大&lt;/a&gt;大&amp;nbsp;  &lt;a target="_blank" href="http://352202405.blog.163.com/blog/static/123132105200973115256655/#"&gt;中&lt;/a&gt;中&amp;nbsp;  &lt;a target="_blank" href="http://352202405.blog.163.com/blog/static/123132105200973115256655/#"&gt;小&lt;/a&gt;小  &lt;/p&gt;  &lt;p style="text-indent: 2em;"&gt;1，__construct()  当实例化一个对象的时候，这个对象的这个方法首先被调用。&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;class Test&lt;/p&gt;  &lt;p style="text-indent: 2em;"&gt;{&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;function  __construct()&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;{&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;echo "before";&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;}&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;}&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;$t = new Test();&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;输出是：&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;start&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;&amp;lt;?&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;class Test&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;{&lt;/p&gt;  &lt;p style="text-indent: 2em;"&gt;function Test()&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;{&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;echo  "end2";&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;}&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;function __construct()&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;{&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;echo "end";&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;}&lt;/p&gt;  &lt;p style="text-indent: 2em;"&gt;}&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;$t =  new Test();&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;//输出end&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;?&amp;gt;&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;我们知道 php5对象模型 &lt;a p=""&gt;&amp;lt; ，所以__construct()作为类的默认的构造函数 而不会调用同类名函数  和__construct()方法的话,php5会默认调用构造函数 ，那么如果我们同时定义构造函数 是类的构造函数 的函数&amp;gt; &lt;/a&gt;&lt;/p&gt;  &lt;p style="text-indent: 2em;"&gt;2,__destruct() 当删除一个对象或对象操作终止的时候，调用该方法。&lt;/p&gt;  &lt;p style="text-indent: 2em;"&gt;class Test&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;{&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;function __destruct()&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;{&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;echo "end";&lt;/p&gt;  &lt;p style="text-indent: 2em;"&gt;}&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;}&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;$t = new Test();&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;将会输出&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;end&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;我们就可以在对象操作结束的时候进行释放资源之类的操作&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;3,__get() 当试图读取一个并不存在的属性的时候被调用。&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;如果试图读取一个对象并不存在的属性的时候，PHP就会给出错误信息。如果在类里添加__get方 法，并且我们可以用这个函数 实现类似java中反射的各种操作。&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;class  Test&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;{&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;public  function __get($key)&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;{&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;echo $key . " 不存在";&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;}&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;}&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;$t = new Test();&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;echo  $t-&amp;gt;name;&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;就会输出：&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;name 不存在&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;4,__set()  当试图向一个并不存在的属性写入值的时候被调用。&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;class Test&lt;/p&gt;  &lt;p style="text-indent: 2em;"&gt;{&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;public  function __set($key,$value)&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;{&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;echo '对'.$key . "附值".$value;&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;}&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;}&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;$t = new Test();&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;$t-&amp;gt;name = "aninggo";&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;就会输出：&lt;/p&gt;  &lt;p style="text-indent: 2em;"&gt;对 name 附值 aninggo&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;5,__call() 当试图调用一个对象并不存在的方法时，调用该方法。&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;class Test&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;{&lt;/p&gt;  &lt;p style="text-indent: 2em;"&gt;public function __call($Key, $Args)&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;{&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;echo  "您要调用的 {$Key} 方法不存在。你传入的参数是：" . print_r($Args, true);&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;}&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;}&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;$t = new Test();&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;$t-&amp;gt;getName(aning,go);&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;程序将会输出：&lt;/p&gt;  &lt;p style="text-indent: 2em;"&gt;您要调用的 getName 方法不存在。参数是：Array&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;(&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;[0] =&amp;gt;  aning&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;[1] =&amp;gt; go&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;)&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;6,__toString()  当打印一个对象的时候被调用&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;这个方法类似于java的toString方法，当 我们直接打印对象的时候回调用这个函数 &lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;class Test&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;{&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;public  function __toString()&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;{&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;return "打印 Test";&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;}&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;}&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;$t = new Test();&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;echo $t; &lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;运行echo $t;的时候，就会调用$t-&amp;gt;__toString();从而输出&lt;/p&gt;  &lt;p style="text-indent: 2em;"&gt;打印 Test&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;7,__clone()  当对象被克隆时，被调用&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;class Test&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;{&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;public  function __clone()&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;{&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;echo "我被复制了！";&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;}&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;}&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;$t = new Test();&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;$t1 = clone $t;&lt;/p&gt;  &lt;p style="text-indent: 2em;"&gt;程序输出：&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;我被克 隆了！&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;echo "我被复制了！"; &lt;/p&gt;&lt;p style="text-indent: 2em;"&gt;}&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;}&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;$t = new Test();&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;$t1 = clone $t;&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;程序输出：&lt;/p&gt; &lt;p style="text-indent: 2em;"&gt;我被克隆了！&lt;/p&gt;&lt;img src="http://www.cnblogs.com/winner/aggbug/1730925.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/winner/archive/2010/05/09/1730925.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/winner/archive/2009/08/26/1554287.html</id><title type="text">eew</title><summary type="text">ewew</summary><published>2009-08-26T05:30:00Z</published><updated>2009-08-26T05:30:00Z</updated><author><name>Winner.Net(2007)</name><uri>http://www.cnblogs.com/winner/</uri></author><link rel="alternate" href="http://www.cnblogs.com/winner/archive/2009/08/26/1554287.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/winner/archive/2009/08/26/1554287.html"/></entry><entry><id>http://www.cnblogs.com/winner/archive/2009/08/26/1554283.html</id><title type="text">CSS+js 实现mouse移动单元格上全部显示</title><summary type="text">&amp;lt;STYLE&amp;gt;&amp;lt;!-- .divover {BORDER-RIGHT: #999999 1px outset; PADDING-RIGHT: 4px; BORDER-TOP: #999999 1px outset; PADDING-LEFT: 4px; Z-INDEX: 2; BORDER-LEFT: #999999 1px outset; WIDTH: 100%; COLOR:...</summary><published>2009-08-26T05:29:00Z</published><updated>2009-08-26T05:29:00Z</updated><author><name>Winner.Net(2007)</name><uri>http://www.cnblogs.com/winner/</uri></author><link rel="alternate" href="http://www.cnblogs.com/winner/archive/2009/08/26/1554283.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/winner/archive/2009/08/26/1554283.html"/></entry><entry><id>http://www.cnblogs.com/winner/archive/2009/07/03/1516416.html</id><title type="text">web2.0网站的性能优化方法 (转)</title><summary type="text">web2.0网站的性能优化方法一、前端优化网站性能优化是一个很综合的话题，涉及到服务器的配置和网站前后端程序等各个方面，我只是从实际经历出发，分享一下自己所尝试过的网站性能优化方法。之所以在标题上挂一个web2.0，是因为本文更偏重于中小网站的性能优化，我所使用的系统也是典型web2.0的LAMP架构。首先讲讲前端的优化，用户访问网页的等待时间，有80%是发生在浏览器前端，特别是页面和页面中各种元...</summary><published>2009-07-03T08:09:00Z</published><updated>2009-07-03T08:09:00Z</updated><author><name>Winner.Net(2007)</name><uri>http://www.cnblogs.com/winner/</uri></author><link rel="alternate" href="http://www.cnblogs.com/winner/archive/2009/07/03/1516416.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/winner/archive/2009/07/03/1516416.html"/></entry></feed>
