LAMP(Linux-Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据库,Perl、PHP或者Python编程语言,所有组成产品均是开源软件,是国际上成熟的架构框架,很多流行的商业应用都是采取这个架构,和Java/J2EE架构相比,LAMP具有Web资源丰富、轻量、快速开发等特点,微软的.NET架构相比,LAMP具有通用、跨平台、高性能、低价格的优势,因此LAMP无论是性能、质量还是价格都是企业搭建网站的首选平台。

  对于大流量、大并发量的网站系统架构来说,除了硬件上使用高性能的服务器、负载均衡、CDN等之外,在软件架构上需要重点关注下面几个环节:使用高性能的操作系统(OS)、高性能的网页服务器(Web Server)、高性能的数据库(Databse)、高效率的编程语言等。下面我将从这几点对其一一讨论。

  操作系统

  Linux操作系统有很多个不同的发行版,如Red Hat Enterprise Linux、SUSE Linux Enterprice、Debian、Ubuntu、CentOS等,每一个发行版都有自己的特色,比如RHEL的稳定,Ubuntu的易用,基于稳定性和性能的考虑,操作系统选择CentOS(Community ENTerprise Operating System)是一个理想的方案。

  CentOS(Community ENTerprise Operating System)是Linux发行版之一,是RHEL/Red Hat Enterprise Linux的精简免费版,和RHEL为同样的源代码,不过,RHEL和SUSE LE等企业版,提供的升级服务均是收费升级,无法免费在线升级,因此要求免费的高度稳定性的服务器可以用CentOS替代Red Hat Enterprise Linux使用。

点击在新窗口中浏览此图片

LAMP网站架构图

  Web服务器、缓存和PHP加速

  Apache是LAMP架构最核心的Web Server,开源、稳定、模块丰富是Apache的优势。但Apache的缺点是有些臃肿,内存和CPU开销大,性能上有损耗,不如一些轻量级的Web服务器(例如nginx)高效,轻量级的Web服务器对于静态文件的响应能力来说远高于Apache服务器。

  Apache做为Web Server是负载PHP的最佳选择,如果流量很大的话,可以采用nginx来负载非PHP的Web请求。nginx是一个高性能的HTTP和反向代理服务器,Nginx以它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。Nginx不支持PHP和CGI等动态语言,但支持负载均衡和容错,可和Apache配合使用,是轻量级的HTTP服务器的首选。

  Web服务器的缓存也有多种方案,Apache提供了自己的缓存模块,也可以使用外加的Squid模块进行缓存,这两种方式均可以有效的提高Apache的访问响应能力。Squid Cache是一个Web缓存服务器,支持高效的缓存,可以作为网页服务器的前置cache服务器缓存相关请求来提高Web服务器的速度,把Squid放在Apache的前端来缓存Web服务器生成的动态内容,而Web应用程序只需要适当地设置页面实效时间即可。如访问量巨大则可考虑使用memcache作为分布式缓存。

  PHP的加速使用eAccelerator加速器,eAccelerator是一个自由开放源码PHP加速器,优化和动态内容缓存,提高了性能PHP脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。它还有对脚本起优化作用,以加快其执行效率。使PHP程序代码执效率能提高1-10倍。

  具体的解决方案有以下几种:

  1、squid + Apache + PHP + eAccelerator

  使用Apache负载PHP,使用squid进行缓存,html或图片的请求可以直接由squid返回给用户。很多大型网站都采用这种架构。

  2、nginx/Apache + PHP(fastcgi) + eAccelerator

  使用nginx或Apache负载PHP,PHP使用fastcgi方式运行,效率较高。

  3、nginx + Apache + PHP + eAccelerator

  此方案综合了nginx和Apache的优点,使用Apache负载PHP,nginx负责解析其他Web请求,使用nginx的rewrite模块,Apache端口不对外开放。

  数据库

  开源的数据库中,MySQL在性能、稳定性和功能上是首选,可以达到百万级别的数据存储,网站初期可以将MySQL和Web服务器放在一起,但是当访问量达到一定规模后,应该将MySQL数据库从Web Server上独立出来,在单独的服务器上运行,同时保持Web Server和MySQL服务器的稳定连接。

  当数据库访问量达到更大的级别,可以考虑使用MySQL Cluster等数据库集群或者库表散列等解决方案。

  总的来说,LAMP架构的网站性能会远远优于Windows IIS + ASP + Access(例如月光博客)这样的网站,可以负载的访问量也非常大,国内的大量个人网站如果想要支撑大访问量,采用LAMP架构是一个不错的方案。

  综上所述,基于LAMP架构设计具有成本低廉、部署灵活、快速开发、安全稳定等特点,是Web网络应用和环境的优秀组合。
#AddDefaultCharset GB2312
AddDefaultCharset utf-8
現在有另外一隻更方便的程式囉~ 就是下述:

    * convmv - convert filenames to utf8 or any other charset

這隻主要是隻 Perl script, 該做 轉換/備份/測試/偵測環境 等等, 都寫的蠻完整的.
convmv 轉換編碼指令

    * convmv -f big5 -t utf-8 -r --notest *
    * -f big5: 從 Big5 編碼轉換 (不過標準應該是要寫 big5-eten, 但是我測試 big5 也可以動. :P)
    * -t utf-8: 轉換編碼到 UTF-8
    * -r: 遞迴的將目錄下的所有檔名都做轉換
    * --notest: 如果不下這個, 一切動作都只是測試, 會直接將轉換前和轉換後的檔名列給你看, 這加下去, 才會實際轉換檔名.
    * *: 所有檔案

其他參數

    * --list : 列出所有可用的編碼
    * --unescape : 轉換檔名中 %xx 這種 16 進位的編碼 (mv "./a%20x.jpg" "./a x.jpg")
    * --lower : 將所有檔名都轉小寫(ex: convmv --lower LOWER.txt)
    * --upper : 將所有檔名都轉大寫
    * -i : 互動模式, 轉換前會先經過 y/n 確認
    * 更多詳細可 man convmv 或 convmv --help, 除此之外, 可以另外再搭配 rename 做些其他應用~ :)

实例:
convmv -f gb2312 -t utf-8 -r --notest *

来源:http://plog.longwin.com.tw/news-unix/2008/07/15/convmv_utf8_big5_convert_linux_2008
header.php:

<script type="text/javascript" src="/js/jquery/jquery.js" ></script>
<script type="text/javascript" src="/js/jquery/jquery.webinfo-min.js" ></script>
<script type="text/javascript" src="/js/jquery/jquery.form.js" ></script>

jquerytest.php


<img src="images/grym_32.jpg" class="bt_vote_test" ref_test="test..."></img>


<script >
  $('.bt_vote_test').click(function(){dosomething($(this).attr('ref_test'));});
  function dosomething(value)
  {
    
    alert(value);
  }
  
</script>

如果你在网上搜索 “apache配置”,搜到的页面大多都会建议你在httpd.conf中加上这么一句:AddDefaultCharset GB2312。对于新手而且是只用GB2312编码的开发人来说,这么做是ok的。阅读全文
转载自:http://www.javaeye.com/topic/5009

Ps:
在onsubmit函数里加上一个documents.write会显不出来的,也就破坏了函数的意意。

众所周知,在表单中加上onsubmit="return false;"可以阻止表单提交。
下面是简单的一小段代码:


java代码:  


<form action="index.jsp" method="post" onsubmit="submitTest();">
    <INPUT value="www">
    <input type="submit" value="submit">
</form>

<SCRIPT LANGUAGE="JavaScript">
<!--
    function submitTest() {
        // 一些逻辑判断
     return false;
    }
//-->
</SCRIPT>



大家判断像上面的写法,点击submit按钮该表单是否提交?

若答案为是,就不用往下看了。

若答案为否,错了。实际情况是表单正常提交,若想它不提交,应该将
java代码:  


<form action="index.jsp" method="post" onsubmit="submitTest();">


改为
java代码:  


<form action="index.jsp" method="post" onsubmit="return submitTest();">




为何?

原来onsubmit属性就像是<form>这个html对象的一个方法名,其值(一字符串)就是其方法体,默认返回true;

和Java一样,在该方法体中你可以写任意多个语句,包括内置函数和自定义函数,如
java代码:  


onsubmit="
    alert('haha'); // 内置函数
    submitTest();  // 自定义函数
    alert(this.tagName); // 用到了this关键词
    ......(任意多条语句)    
    return false;
"



就相当于
java代码:  


Form.prototype.onsubmit = function() {
    alert('haha'); // 内置函数
    submitTest();  // 自定义函数
    alert(this.tagName); // 用到了this关键词
    ......(任意多条语句)    
    return false;
};



这样的话你就覆写了(override)其默认方法(默认返回true)
大家注意到方法体中可以用this这个关键词,这里即代表了<form>的对象实例。

经过这样的分析后,以上情况就不难理解了:
java代码:  


<form action="index.jsp" method="post" onsubmit="submitTest();">


这样写,override方法的效果为:
java代码:  


Form.prototype.onsubmit = function() {
    submitTest();
};


在这里submitTest()虽然返回false,但我们只执行了此函数,没有对其结果进行任何处理。而
java代码:  


<form action="index.jsp" method="post" onsubmit="return submitTest();">


override方法的效果为:
java代码:  

Form.prototype.onsubmit = function() {
    return submitTest();
};


这样,我们利用到了它的返回值,达到了预期效果。
这样理解的话我想印象会深刻得多,就不易出错了

结论:
我 们可以用Java里的思维方式来思考模拟JavaScript中的类似情况(JavaScript中基于prototype的面向对象技术也确实是这样做 的),但他们毕竟还是有本质上的区别,如Java是强类型的,有严格的语法限制,而JavaScript是松散型的。象上述方法:
java代码:  



Form.prototype.onsubmit = function() {  
};



既可以有返回值,又可以没有返回值,在Java里是通不过的,毕竟Java里面不能靠方法的返回值不同来重载(overload)方法,而JavaScript中的重载要松散得多.

比如一个页面里有两个form,如下:


<form id="form1" name="form1" method="post" action="http://127.0.0.1/">
  <input type="submit" name="Submit2" value="提交表单" />
</form>



<form name="form2"  onsubmit="return false">
input name="" type="submit" value="提交" onclick="bian()" />
</form>
两个form里分别有一个type为submit的按扭


如果想按第二个按钮不想提交表单,只想执行bian()方法时,如果不用onsubmit="return false">就达不到效果,就会提交表单了!
而加上后就可以了!!
onsubmit="
    alert('haha'); // 内置函数
    submitTest();  // 自定义函数
    alert(this.tagName); // 用到了this关键词
    ......(任意多条语句)    
    return false;
"



jquery写法:
function submituserinfocheck()
{
  alert("Hello the world...");
  if($('#FCollege').val()=="")
  {
    alert("学校不能为空!");
    $('#FCollege').focus();
    return false;
  }
  
  if($('#FNick').val()=="")
  {
    alert("昵称不能为空!");
    $('#FNick').focus();
    return false;
  }  
  return true;
}


再加上:
document.forms[0].onsubmit = function(){
    return false;
}

$("form#addForm").submit(function(evt){
    return false;
    evt.preventDefault();
});
step的:

function ChangeMV(vid,width,height,auto)
{
  var w,h;
  w=147;h=117;
  if(width)w=width;
  if(height)h=height;
  var a=0;
  if(auto)a=1;
  var v='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+w+'" height="'+h+'">                        <param name="movie" value="http://cache.tv.qq.com/qqplayerout.swf" />                        <param name="allowFullScreen" value="true" />                        <param name="flashvars" value="f=3&vid='+vid+'&auto='+a+'"  <param name="wmode" value="transparent" />                        <embed type="application/x-shockwave-flash" src="http://cache.tv.qq.com/qqplayerout.swf" width="'+w+'" height="'+h+'" id="flashplayer" quality="high" allowScriptAccess="sameDomain" allowFullScreen="true" flashvars="vid='+vid+'&auto='+a+'" wmode="transparent"></embed>                    </object>';  
  return v;
}




dc的:

function bofang(url)
{
var brodcast = '<object name="wmplayer" classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95"  codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715" type="application/x-oleobject" width=328 height=220 hspace="0" standby="Loading Microsoft Windows Media Player components..." id="NSPlay">    <param name="AutoRewind" value=0>    <param name="FileName" value="http://newalto.qq.com/data/'+url+'">    <param name="ShowControls" value="1">    <param name="ShowPositionControls" value="0">    <param name="ShowAudioControls" value="1">    <param name="ShowTracker" value="0">    <param name="ShowDisplay" value="0">    <param name="ShowStatusBar" value="1">    <param name="ShowGotoBar" value="0">    <param name="ShowCaptioning" value="0">    <param name="AutoStart" value="1">    <param name="Volume" value="2000">    <param name="AnimationAtStart" value="0">    <param name="TransparentAtStart" value="0">    <param name="AllowChangeDisplaySize" value="1">    <param name="AllowScan" value="0">    <param name="EnableContextMenu" value="0">    <param name="ClickToPlay" value="0"></object>';
document.getElementById('video_img_panel').innerHTML = brodcast;
}


原名:<<Pro PHP Patterns, Frameworks, Testing and More>>
作者:Kevin MCArthur
出版者: APress,Mar 24,2008。
页数:349页。
------------------------------------------

难度指数:中-高级。阅读全文
经过二十多年的快速发展, 目前我国已是世界第二大禽肉生产国。然而, 与此地位不相符合的是我国禽肉出口量仅为生产量的3%左右, 典型的生产上的“巨人”和出口上的“矮子”。美国、荷兰、土耳其、澳大利亚等国饲料原料价格较低, 设备先进, 大规模饲养成本比我国低20%~30%。1996年, 欧盟禁止我国禽肉产品进入其市场, 使我国失去了欧盟市场3~4 万吨的冻鸡产品份额; 而日本也一再对中国肉鸡采取歧视性采样检查, 以限制中国廉价肉鸡对其国内的冲击。我国肉鸡产品的年增长率从1996 年的14%陡降为2000 年的4%, 预计再有10~15 年的时间, 中国家禽业便可全部与世界接轨, 而肉鸡业首当其冲; 肉鸡业显然面临极大的挑战, 肉鸡生产中的许多问题亟待解决。阅读全文
RewriteRule ^/con/([a-z]*)/act/([a-z]*)$ /index.php?con=$1&act=$2&%1
用PHP去正则表达式匹配:
erg.php

<?php
$str_temp = "/con/user/act/introl";
preg_match("/^\/con\/([a-z]*)\/act\/([a-z]*)$/i", $str_temp, $out);
print_r($out);
?>



[root@localhost ~]# php erg.php
Array
(
    [0] => /con/user/act/introl
    [1] => user
    [2] => introl
)
如果是linux这种类unix环境的话:
\! clear
或者试试按ctrl-L
echo中输出\n表示换行符并不会被echo解释成换行,而是被当做普通字符输出。你可以使用echo -e来解释转义字符,这样修改后,在echo中使用-e选项解释转义字符,确保了在输出日期之前插入一个换行符。
echo -e "\n$(date "+%Y-%m-%d")" >> /data/www/xxxx/msglog/msglog.txt




@echo off
cls
@echo aaa >>test.txt
@echo ccc >>test.txt
@echo bbb >>test.txt
exit


写入一行后cmd退出:

@echo off
cls
echo 172.25.38.70  phpmyadmin.qq.com >> C:\WINDOWS\system32\drivers\etc\hosts
start  "C:\Program Files\Internet Explorer\IEXPLORE.EXE" http://phpmyadmin.qq.com
EXIT
jackxiang@Tencent:~/henganxy/htdocs/view> echo $LANG;
zh_CN.UTF-8
显示乱码!!!
root:

如下设置正常显示utf-8中文:

LANG=en_US.ISO8859-1
LC_ALL=en_US.ISO8859-1
LC_CTYPE=en_US.ISO8859-1
EDITOR=vim
TERM=linux
#TERM=xterm
export LANG EDITOR TERM


查看Utf-8字符正常显示:
[/home/jackxiang/henganxy/htdocs/view]# echo $LANG;
en_US.ISO8859-1

secure——CTR设置:
utf-8

解决jackxiang乱码问题:
LANG=en_US.ISO8859-1
export LANG EDITOR TERM


任然有问题,待解决!!!
大家都说Nginx比Apache要快,那为什么Nginx的性能要比Apache高得多?这得益于Nginx使用了最新的epoll(Linux 2.6内核)和kqueue(freebsd)网络I/O模型,而Apache则使用的是传统的select模型。目前Linux下能够承受高并发访问的Squid、Memcached都采用的是epoll网络I/O模型。 阅读全文
php的引用(就是在变量或者函数、对象等前面加上&符号)
阅读全文
分页: 209/272 第一页 上页 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 下页 最后页 [ 显示模式: 摘要 | 列表 ]