当前位置:首页 » 编程语言 » php必须知道的300个问题

php必须知道的300个问题

发布时间: 2022-07-11 05:48:53

php 中如何实现跳转到一个新的页面

1、首先用HTTP头信息重定向到另外一个页面的方法,如下图所示。

❷ 我想学网页制作需要学一些什么知识

想学做网站的无非两种人,一种准备从事网站制作行业的,一种是只想给自己做或自己公司做一个网站。
一、第一种类型要学习的知识点:

第一步:先学习三种基础脚本
1、html脚本:组成网页的最基本的语言,很多人会说先学dreamweaver,你就听别人瞎说吧,dreamweaver是html的快捷编辑软件,用这个的确可以省事很多,但是如果你只会dreamweaver而不会html脚本,那么你永远只是初级入门,不可能提高。如果你熟练掌握html脚本语法,dreamweaver你根本没有必要去学习,计事本直接可以编写更简洁很高效的html代码。而且主流的div+css架构让你必须精通html脚本。(网站很多脚本,自己网络一下:html教程,下面几种脚本的教程也可以搜索到,建议不要看视频教程,一定要看文字的,边看边用计事本敲打代码然后保存为.html格式文件来打开看效果)
2、css样式:用来修饰html脚本的,比如设置背景色,边框,字体,颜色等等

3、javascript脚本:我们经常看到一些网站图片幻灯片,几张图片在轮流变换显示,或滚动显示,这些效果就必须借助javascript脚本来实现。

第二步:学习一种动态编程语言,建议学习php或asp.net,asp就不要学习了,微软已经不更新了,至于学php还是asp.net,看你个人喜欢,你最好先网络一下php和asp.net的介绍,我本人是两种都接触过,不过最后主攻asp.net。相比其他知识,学习编程语言是最困难的,当然也不是想象那么难,起码我个人觉得比高中的几何,物理简单多了

第三步:学习常用的数据库用法,如果你学php,那么你必须学习mysql的安装,建表,修改字段等。如果你学习asp.net,你必须学access和mssql的安装,建表,修改字段等等,学习数据库的操作是比较简单的。

第四步:系统学习上面知识点后,尝试去开发一些小功能,比如文章的发布和管理,购物车的实现,会员注册及登陆功能的实现等等。在练习过程中最能提高了,遇到问题基本网络一下都能找到答案。最后尝试自己做一个独立的网站,比如去开发一个简单企业网站,当你能独立制作一个小公司网站后,你基本可以从事这个行业接单做生意了,剩下的就是不断实践和提高了

二、下面说说第二种类型

一般很多站长并不是想从事网站制作行业,所以就没有必要学习上面那么多东西,当然掌握基础脚本对你做一个好网站还有有帮助的,这里不赘述了,做网站很简单,直接去下载网站管理系统来做,制作不同类型采用不同网站系统。
1、做企业、学校,咨询类:可以选择pageadmin系统
2、制作论坛,可以选择discuz系统
3、制作购买网站,可以选择ecshop系统
4、制作个人博客,可以选择wordpress系统
接下来就是如何安装使用这些系统了,可以通过在自己电脑安装iis软件来运行这些系统,本地运行方便网站的修改和制作,如果你下载的软件是php开发的还需要安装php环境,如果是asp.net开发的需要安装framework4.0,每种系统官方网站都有详细的安装配置教程。
如果你本地不会配置环境,可以直接去购买一个虚拟主机上传到主机上安装,我们知道网站要在互联网上访问,必须有一个域名和网站空间,早晚都要购买的,一般一个200M网站空间就够用了,1年费用大概在300元上下,网络一下虚拟主机可以找得到很多服务商,挑选一家联系客服人员购买即可,他们会教你怎么安装这些系统。
安装后剩下就是熟悉这些系统的使用了,建议到对应系统的官方网站去看帮助,一般来说摸索过几天,熟悉一些主要功能,就能很方便的制作出一个很专业的网站了。
最后提示,用点心,没有什么学不会,祝您好运。

❸ 用php建一个网站都需要写些什么

不好意思,技术上帮不了你,不过可以给你提供域名或空间。
推荐你用:M3型空间:可免费试用,独立IP,多线机房,300M空间,50M的MSSQL或MYSQL,WIN2003支持ASP/NET/ MSSQL2000,UNIX支持PHP4/5/MYSQL5,无需备案即可访问。
国际顶级英文域名:60元(续费65元)
可咨询我们在线客服,享受优惠。我们已为25000多家用户提供了6年多优秀服务,更专业,更稳定。联系方式请点击我的用户名——用户资料。

❹ php 502 bad gateway怎么解决

1. php.ini的memory_limit 过小(如果有个别php程序进程需要占用极大内存时这个必须注意)
2. php-fpm.conf中max_children或者max_requests 设置不合理(设置过小会因为没有足够的cgi进程处理请求,设置过大会出现一会儿有响应正常,一会儿等很久才有响应的情况,一般情况下children按 照内存计算,比如说1G设置64,2G128。这个根据实际情况自行调整。另外查看当前的PHP FastCGI进程数是否够用的命令为:netstat -anpo |grep “php-cgi” | wc -l 如果实际使用的“FastCGI进程数”接近预设的“FastCGI进程数”,那么,说明“FastCGI进程数”不够用,需要增大。)
3. 查看nginx错误日志,发现 pstream sent too big header while reading response headerfrom upstream ,则检查client head buffer,fastcgi buffer size是否过小,可设置为32K。
4. php程序执行时间过长而超时,检查nginx和fastcgi中各种timeout设置。(nginx 中的 fastcgi_connect_timeout 300;fastcgi_send_timeout 300 :fastcgi_read_timeout300; keepalive_timeout ; php-fpm中的request_terminate_timeout,php.ini中的max_execution_time)
5. php-fpm有一个参数 max_requests ,该参数指明了每个children最多处理多少个请求后便会被关闭。在大量处理请求下,如果该值设置过小会导致children频繁的自杀和建立而浪费 大量时间,若所有的children差不多都在这个时候自杀,则重建前将没有children响应请求,于是出现502 。可以将该值设置大一些或者是0[无限]。
如果你服务器并发量非常大,那只能先增加机器,然后按以下方式优化会取得更好效果;但如果你并发不大却出现502,一般都可以归结为配置问题,脚本超时问题。

1.php-fpm进程数不够用
使用netstat -napo |grep "php-fpm" | wc -l查看一下当前fastcgi进程个数,如果个数接近conf里配置的上限,就需要调高进程数。
但也不能无休止调高,可以根据服务器内存情况,可以把php-fpm子进程数调到100或以上,在4G内存的服务器上200就可以。
2. 调高调高linux内核打开文件数量
可以使用这些命令(必须是root帐号)
echo 'ulimit -HSn 65536'>> /etc/profile
echo 'ulimit -HSn 65536'>> /etc/rc.local
source /etc/profile
3.脚本执行时间超时
如果脚本因为某种原因长时间等待不返回,导致新来的请求不能得到处理,可以适当调小如下配置。
nginx.conf里面主要是如下
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
php-fpm.conf里如要是如下
request_terminate_timeout =10s
4.缓存设置比较小
修改或增加配置到nginx.conf
proxy_buffer_size 64k;
proxy_buffers 512k;
proxy_busy_buffers_size 128k;
5. recv()failed (104: Connection reset by peer) while reading response header fromupstream
可能的原因机房网络丢包或者机房有硬件防火墙禁止访问该域名
但最重要的是程序里要设置好超时,不要使用php-fpm的request_terminate_timeout,
最好设成request_terminate_timeout=0;
因为这个参数会直接杀掉php进程,然后重启php进程,这样前端nginx就会返回104: Connection reset by peer。这个过程是很慢,总体感觉就是网站很卡。
May 01 10:50:58.044162[WARNING] [pool www] child 4074, script'/usr/local/nginx/html/quancha/sameip/detail.php' execution timed out(15.129933 sec), terminating
May 01 10:50:58.045725 [WARNING] [pool www] child 4074 exited on signal 15SIGTERM after 90.227060 seconds from start
May 01 10:50:58.046818 [NOTICE] [pool www] child 4082 started
说一千道一万最重要的就是程序里控制好超时,gethostbyname、curl、file_get_contents等函数的都要设置超时时间。
另一个就是多说,这个东西是增加了网站的交互性,但是使用的多了反应就慢了,如果你网站超时且使用了多说是,可以关闭它。
6、自己遇到502的解决办法:
调整增大php 和Nginx 的backlog数。

❺ 面试的时候面试官一般都会问些什么问题

看下这个对你有帮助的~~

面试的成功很可能就决定于你事前的准备工作是否到位。在面试过程中许多问题往往是突如其来、无法预测的,人与人交往时总会不时碰到尴尬的情况,即使你极小心防备,也难保不发生,尤其是在面试这种重要又紧张的场合,这类情况更容易出现。一旦出现这种情况往往会影响自己的整个面试表现,甚至因而前功尽弃,导致面试失败。对此专家建议应试者在面试过程中一定要镇静自如、沉着应对,最好预先了解一下面试过程并做必要的准备工作防止尴尬局面的出现。现向大家介绍几种面试中经常会遇到的情况供参考:

1、考官问你,你能说一下自己有哪些缺点吗?

分析:大多数主考官问这个问题其实是一个很常见的问题。都是想洞察一下你在碰到紧张不自在 的难题时,能否从容不迫地解决。因此,除了答案的内容外,回答时的态度也一样重要。无论你提出什么缺点,总要记住主考官要找的是一个勇于自我反省、而不是以自我为中心的人。一个人须有自知之明,清楚自己的优缺点,这样才能扬长避短,不断进步。如实讲出自己的长处短处,一般不会减少获取聘用的机会。除非你的缺点会直接影响担当那份工作的称职程度。

——粗心大意。可能你考虑事情习惯从大处着眼,因此偶然会忽略细节,所以你喜欢担当整体策划的工作,而不擅长处理琐碎研讨会具体的行政事务。这种缺点作为用人单位未必十分介意,还可能因此逐步委你以需要领导才能的重任。

——固执己见。当一个人觉得自己掌握资料正确而又理由充分时,不会轻易让步,甚至不惜与人争执。他要完全肯定对方的主意比自己的好时,才会放弃己见。固执倔强确实是不妥的缺点,惹人讨厌,但从另外一个角度看,这也是勇气与自信的证明。

——没有耐心。一个人耐心不够的原因可能是过分重视工作,希望为单位做出更大的贡献,因而当同事未有及时完成工作就忍受不了。

2、你为什么要竞聘该职位?

分析:主考官不但会留意你回答这个问题时说了些什么,也会留意你回答问题时的态度。如果你真的能够应付挑战,这时正是好机会,让你好好总结自己先前的话,指出自己何以适合担当这份工作。主考官会据此判断你有没有自信,又能否实事求是。假如你这时候列出大堆无关联的经验技能,主考官会认为你大概不能胜任,或认为你根本误会了这份工作的性质。在面试之前,最好仔细分析自己的教育背景、资历与工作经验,了解这份工作对自己的适合程度。回答这个问题要简明扼要,一语中的,切忌长篇大论、夸夸其谈,否则言多必失。

3、你的学习成绩能否正确反映你的才能?

分析:这个问题主要是想查悉究竟你对工作的态度,是不是也跟你对念书的态度一样?如果你求学时成绩优异,切勿让人觉得你求学的兴趣比工作的兴趣浓。如果你学习成绩不好,应该坦白解释,不要企图诿过于他人,这样做只表示你不负责任。更佳的方法是转移目标,多谈自己成绩好的科目。

4、你有没有同时申请别的工作?是什么单位?

分析:如果你是应届毕业生,在求职面试时主考官很可能就会问你这个问题。他们提出这个问题主要想知道你申请的工作与你的目标是否一致。如果你申请的各项工作是繁杂而多样化的,便会使人觉得你毫无目标,不是过分野心便是缺乏自信。如果你只申请了一类工作,便很可能令主考官留下良好印象,认为你一心一意循着同一方向发展,做事有计划、有目的性。但也小心不要表现得过分集中找同一类大同小异的工作,以免显得单调,不懂得变通。所以明智的办法是提出两三类你已申请了的工作,并大约说明自己选择的次序。

5、你过去在工作中最大的压力是什么?

分析:以下是三个应试者的回答:“我喜欢接受新的工作挑战。当然从事新的工作,比较缺少经验,因此就需要缜密的思考与妥善的规划。我的工作压力大多产生在计划阶段,直到全部工作顺利完成,那份成就感却也是令人满足而又值得回味的。”“我刚刚从大学毕业,正在应聘工作,还感觉不到工作上有什么压力。不过以前上学时功课的压力倒是蛮重的。”“最近几年我在工作上最大的压力就是人力资源的严重缺乏。我在服务业担任管理工作已有十年的实际经验。过去面临的不是人才招募的问题,而是招进来以后的训练和管理等方面的问题。最近面临的是找人困难,留人更难。”

6、你自认为过去取得过哪些重大成就?

评点:一位应试者是这样回答的:“老实说我刚从学校毕业,在工作方面还没有任何成就。只是有一个暑假我和几位同学担任义务工作时,辅导一批有智力障碍的儿童,教他们说话、带他们游戏、帮他们洗澡、哄他们睡觉……虽然做的都是些琐事,但大家都尽心尽力,忘记了辛苦。我在兴奋之时感到自己还好像颇有成就。”

所谓“重大成就”,并非都是惊天动地的壮举。很多应试者面对这种问题常常不知如何应对,因为他们首先被“重大成就”吓住了,接着他又找不出自己的重大成就在哪里。于是只好支吾其词,这会使得主考官觉得应试者乃一平庸之辈。假如应试者能够认识到平凡中的伟大,相信一定能陈述一些自己的成就。

7、你是一位好听众吗?

分析:一位应试者作了如下回答:“上帝给我们两只耳朵,一张嘴巴,意思就是让我们多听少讲。我虽然不相信上帝,但我相信我是一位好听众。”幽默给人以启发,幽默也显示出应试者的个人魅力,幽默还能活跃面试气氛,恰到好处的幽默会给主考官留下极好的印象。

此外,面试考察中,有些求职者,尤其是女性,被别人提到自身的缺点,或是不愿触及的问题时,常会不由自主地摆出防御姿态,甚至反击对方。这是不对的,别忘了,你只是一个候选人,自以为是振振有词地驳倒主考官,只会使你误入过分自信的陷阱,招致“狂妄自大”的评价。

专家对策建议:

1、既是说错了话也要保持镇静

人在紧张的场合最容易冲口而讲出错话, 经验不足的应试者碰到这种情况,往往懊悔万分,心慌意乱,越发紧张,接下去的表现更为糟糕。有些年轻人发觉自己说错话后会停下来默不作声,或伸舌头,这些都是不成熟不庄重的表现。

明知的应对办法是保持镇静,假如说错了的话无碍大局,也没有得罪人,可以若无其事,专心继续应对,切不可耿耿于怀,因为一个单位不会因为一次小错误而放过合适的人才,而且主考官也会谅解你因心情紧张而出的错。假如说错的话比较重要,或会得罪别人,应该在合适的时间更正并道歉,比如说:“对不起,刚才我紧张了一点,好像讲错了话,我的意思是……不是……请原谅。”出错之后弥补自己的过失需要很大的勇气和技巧,主考官通常会欣赏应试者的坦白态度和打圆场的高明手法,你说不定还会因此博得好感。

2、遇到不懂或不明白的问题

在面试过程中碰到不懂得回答的问题,硬着头皮胡乱说一通,掩饰自己的无知,这是下策,因为资深的主考官很可能继续追问下去,应试者乱说只会出洋相,主考官即使不追问,也可能心中有数。还有些应试者企图回避问题,东拉西扯讲别的事情混过去,这也是非常不明智的。

最明智的应对措施是坦白承认:“我不懂”,“对于这个问题,我还认识不够,看来今后得加强这方面知识的学习。”没有人全知全能,什么都精通,你态度诚恳,反而会博得主考官的好感。有时候在面试过程中,主考官提出的问题,应试者不明白他想问什么。如果是没有听清楚,可以请求对方重复一次。

可是有时即使再问一次,还是没办法抓住问题的核心。这个现任可能在应试者方面,因为他对问题涉及的范围认识不够,但更可能在主考官方面,或者因为他的问题组织得不好,或者讲得太 简单太急速。

假如明知主考官问得不妥当,也不应该当面指出“您的问题很模糊,我不知道您想问什么”,最好是婉转一点表示自己不大明白问题要求哪一方面的答案,尝试给最可能接近的资料,说“不知道您想知道的是不是这个”之类。最重要的是态度诚恳,不胡乱猜测、信口开河。
----面试时的应答技巧
应答是面试的主要形式。高明的应答技巧能提高面试成绩而获得胜利。
1、有问必答。不管是什么问题,都要作出回答。这是最基本的原则。
2、坦率真诚。有些涉及到专业性很强的问题,而你又确实不懂,你就坦率承认。
3、侧面回答。有些问题要想正面回答等于是否定自己,因此要设法将可能否定自己的话,转化成肯定自己的话。
4、反戈一击。有些问题太过刁钻,而且实在无法回答,不妨反戈一击,反问对方,也能起到意想不到的效果。
5、大题小作。考官有时会问一些"很大"的题目,你必须"小"作,不要没选择地没目的地说。一般技巧是围绕你应聘的职位来谈。

面试难题应答实例
对面试难题回答的原则技巧是:避其锋芒;转移话锋;暗渡陈仓;避重就轻。其中关键是:要变被动为主动,把问题转向可以主动操纵的方面来。 面试策略
---踏入社会的第一步
毕业生走出校门,挑选梦想的行业之后,立即面对如何挑选就业应征的职场服装,如何通过握手等肢体语言给人留下好的印象,以及如何在众多人员参加的会议室内找到自己的最佳位置等许多细微的问题。尽管社会越来越强调心情主导的原则,但社会上的一些传统概念,求职人还是必须首先适应。

❻ 求一个PHP简单的插入数据库/读取示例。

我来给你解决:
只需要一个页面,简单高效,鉴于你的服务器配置各方面都是本地,那么省去很多错误处理:代码见下(复制过去就可以用,字符集一定要正确啊,数据库,meta,names必须要统一):
<!doctype html>
<html>
<head>
<meta charset="utf-8"> <!-- 如果你是GBK或gb2312,请修改utf8为你需要的字符集 -->
<title>列表</title>
</head>

<body>
<?php
//连接数据库
$connect=mysql_connect('localhost','username','password'); //设置字库
mysql_query("SET NAMES utf8"); //如果你是GBK或gb2312,请修改utf8为你需要的字符集,同样上面也要改
mysql_select_db('eastses',$connect); //选择数据库
$table='classmate' //选择数据表
//处理
$do=$_GET['do'];
if($do=="" or $do=="view"){ //打开网页时默认调用本节内容,或者点击浏览时调用本节内容
?>
<!-- html代码开始 -->
<table border="1" cellpadding="0" cellspacing="0">
<thead>
<tr>
<td>ID</td>
<td>姓名</td>
<td>昵称</td>
<td>生日</td>
<td>家庭地址</td>
<td>血型</td>
<td>QQ</td>
<td>微博</td>
<td>邮箱</td>
<td>手机</td>
<td>爱好</td>
<td>喜欢的食物</td>
<td>最喜欢说的句子</td>
<td>最想收到的礼物</td>
<td>最喜欢的Ta</td>
<td>最擅长的事情</td>
<td>难忘的回忆</td>
<td>偶像</td>
<td>理想</td>
<td>其他</td>
</tr>
</thead>
<tbody>
<!-- html代码结束 -->
<?php
$result=mysql_query("SELECT * FROM $table"); //查询表中所有记录
while($row=mysql_fetch_array($result)){
echo
"<tr>",
"<td>".$row['0']."</td>",
"<td>".$row['1']."</td>",
"<td>".$row['2']."</td>",
"<td>".$row['3']."</td>",
"<td>".$row['4']."</td>",
"<td>".$row['5']."</td>",
"<td>".$row['6']."</td>",
"<td>".$row['7']."</td>",
"<td>".$row['8']."</td>",
"<td>".$row['9']."</td>",
"<td>".$row['10']."</td>",
"<td>".$row['11']."</td>",
"<td>".$row['12']."</td>",
"<td>".$row['13']."</td>",
"<td>".$row['14']."</td>",
"<td>".$row['15']."</td>",
"<td>".$row['16']."</td>",
"<td>".$row['17']."</td>",
"<td>".$row['18']."</td>",
"<td>".$row['19']."</td>",
"</tr>";
}
?>
<!-- html代码开始 -->
</tbody>
</table><br>
<a href="?do=add">添加信息</a>
<!-- html代码结束 -->
<?php
}elseif($do=="add"){ //点击添加链接时调用本节内容
?>
<!-- html代码开始 -->
<form action="?do=submit" method="get">
姓名<input type="text" name="name"><br>
昵称<input type="text" name="nickname"><br>
生日<input type="text" name="birthday"><br>
家庭地址<input type="text" name="home"><br>
血型<input type="text" name="blood"><br>
QQ<input type="number" name="qq"><br>
微博<input type="text" name="weibo"><br>
邮箱<input type="email" name="email"><br>
手机<input type="number" name="phone"><br>
爱好<input type="text" name="hobby"><br>
喜欢的食物<input type="text" name="food"><br>
最喜欢说的句子<input type="text" name="sentence"><br>
最想收到的礼物<input type="text" name="gift"><br>
最喜欢的Ta<input type="text" name="lover"><br>
最擅长的事情<input type="text" name="keenon"><br>
难忘的回忆<input type="text" name="unforgettable"><br>
偶像<input type="text" name="wanttobecome"><br>
理想<input type="text" name="ideal"><br>
其他<input type="text" name="other"><br>
<button type="submit" name="submit">提交</button>
<button type="reset" name="reset">重新填写</button>
</form>
<!-- html代码结束 -->
<?php
}elseif($do=="submit"){ //点击提交按钮后调用本节内容
$name=$_GET['name'];
$nickname=$_GET['nickname'];
$birthday=$_GET['birthday'];
$home=$_GET['home'];
$blood=$_GET['blood'];
$qq=$_GET['qq'];
$weibo=$_GET['weibo'];
$email=$_GET['email'];
$phone=$_GET['phone'];
$hobby=$_GET['hobby'];
$food=$_GET['food'];
$sentence=$_GET['sentence'];
$gift=$_GET['gift'];
$lover=$_GET['lover'];
$keenon=$_GET['keenon'];
$unforgettable=$_GET['unforgettable'];
$wanttobecome=$_GET['wanttobecome'];
$ideal=$_GET['ideal'];
$other=$_GET['other'];
$result=mysql_query("INSERT INTO $table(id,name,nickname,birthday,home,blood,qq,weibo,email,phone,hobby,food,sentence,gift,lover,keenon,unforgettable,wanttobecome,ideal,other) VALUES(NULL,$name,$nickname,$birthday,$home,$blood,$qq,$weibo,$email,$phone,$hobby,$food,$sentence,$gift,$lover,$keenon,$unforgettable,$wanttobecome,$ideal,$other)"); //按字插入
echo"<a href=\"?do=add\">再添加一组信息</a><br><a href=\"?do=view\">查看信息</a><br>";
}
?>
</body>
</html>
我顶你的肺啊。。CSS和排版格式你可以自己写

❼ php新手学习路线是怎样的

第一阶段:基础阶段(基础PHP程序员)

重点:把LNMP搞熟练(核心是安装配置基本操作) 目标:能够完成基本的LNMP系统安装,简单配置维护;能够做基本的简单系统的PHP开发;能够在PHP中型系统中支持某个PHP功能模块的开发。

时间:完成本阶段的时间因人而异,有的成长快半年一年就过了,成长慢的两三年也有。

  1. Linux

    基本命令、操作、启动、基本服务配置(包括rpm安装文件,各种服务配置等);会写简单的shell脚本和awk/sed 脚本命令等。

  2. Nginx

    做到能够安装配置nginx+php,知道基本的nginx核心配置选项,知道 server/fastcgi_pass/access_log 等基础配置,目标是能够让nginx+php_fpm顺利工作。

  3. MySQL

    会自己搭建mysql,知道基本的mysql配置选项;知道innodb和myisam的区别,知道针对InnoDB和MyISAM两个引擎的不同配置选项;知道基本的两个引擎的差异和选择上面的区别;能够纯手工编译搭建一个MySQL数据库并且配置好编码等正常稳定运行;核心主旨是能够搭建一个可运行的MySQL数据库。

  4. PHP

    基本语法数组、字符串、数据库、XML、Socket、GD/ImageMgk图片处理等等;熟悉各种跟MySQL操作链接的api(mysql/mysqli/PDO),知道各种编码问题的解决;知道常规熟练使用的PHP框架(ThinkPHP、Zendframework、Yii、Yaf等);了解基本MVC的运行机制和为什么这么做,稍微知道不同的PHP框架之间的区别;能够快速学习一个MVC框架。能够知道开发工程中的文件目录组织,有基本的良好的代码结构和风格,能够完成小系统的开发和中型系统中某个模块的开发工作。

  5. 前端

    如果条件时间允许,可以适当学习下 HTML/CSS/JS 等相关知识,知道什么web标准,div+css的web/wap页面模式,知道HTML5和HTML4的区别;了解一些基本的前端只是和JS框架(jQuery之类的);了解一些基本的JavaScript编程知识;(本项不是必须项,如果有时间,稍微了解一下是可以的,不过不建议作为重点,除非个人有强烈兴趣)。

  6. 系统设计

    能够完成小型系统的基本设计,包括简单的数据库设计,能够完成基本的:浏览器 -> Nginx+PHP -> 数据库 架构的设计开发工作;能够支撑每天几十万到数百万流量网站的开发维护工作;

    第二阶段:提高阶段 (中级PHP程序员)

    重点:提高针对LNMP的技能,能够更全面的对LNMP有熟练的应用。 目标:能够随时随地搭建好LNMP环境,快速完成常规配置;能够追查解决大部分遇到的开发和线上环境的问题;能够独立承担中型系统的构架和开发工作;能够在大型系统中承担某个中型模块的开发工作。

    1. Linux

    在第一阶段的基础上面,能够流畅的使用Shell脚本来完成很多自动化的工作;awk/sed/perl 也操作的不错,能够完成很多文本处理和数据统计等工作;基本能够安装大部分非特殊的Linux程序(包括各种库、包、第三方依赖等等,比如MongoDB/Redis/Sphinx/Luncene/SVN之类的);了解基本的Linux服务,知道如何查看Linux的性能指标数据,知道基本的Linux下面的问题跟踪等。

    2. Nginx

    在第一阶段的基础上面,了解复杂一些的Nginx配置;包括 多核配置、events、proxy_pass,sendfile/tcp_*配置,知道超时等相关配置和性能影响;知道nginx除了web server,还能够承担代理服务器、反向静态服务器等配置;知道基本的nginx配置调优;知道如何配置权限、编译一个nginx扩展到nginx;知道基本的nginx运行原理(master/worker机制,epoll),知道为什么nginx性能比apache性能好等知识。

    3. MySQL/MongoDB

    在第一阶段的基础上面,在MySQL开发方面,掌握很多小技巧,包括常规SQL优化(group by/order by/rand优化等);除了能够搭建MySQL,还能够冷热备份MySQL数据,还知道影响innodb/myisam性能的配置选项(比如key_buffer/query_cache/sort_buffer/innodb_buffer_pool_size/innodb_flush_log_at_trx_commit等),也知道这些选项配置成为多少值合适;另外也了解一些特殊的配置选项,比如 知道如何搭建mysql主从同步的环境,知道各个binlog_format的区别;知道MySQL的性能追查,包括slow_log/explain等,还能够知道基本的索引建立处理等知识;原理方面了解基本的MySQL的架构(Server+存储引擎),知道基本的InnoDB/MyISAM索引存储结构和不同(聚簇索引,B树);知道基本的InnoDB事务处理机制;了解大部分MySQL异常情况的处理方案(或者知道哪儿找到处理方案)。条件允许的情况,建议了解一下NoSQL的代表MongoDB数据库,顺便对比跟MySQL的差别,同事能够在合适的应用场景安全谨慎的使用MongoDB,知道基本的PHP与MongoDB的结合开发。

    4. Redis/Memcached

    在大部分中型系统里面一定会涉及到缓存处理,所以一定要了解基本的缓存;知道Memcached和Redis的异同和应用场景,能够独立安装 Redis/Memcached,了解Memcahed的一些基本特性和限制,比如最大的value值,知道PHP跟他们的使用结合;Redis了解基本工作原理和使用,了解常规的数据类型,知道什么场景应用什么类型,了解Redis的事务等等。原理部分,能够大概了解Memcached的内存结构(slab机制),redis就了解常用数据类型底层实现存储结构(SDS/链表/SkipList/HashTable)等等,顺便了解一下Redis的事务、RDB、AOF等机制更好。

    5. PHP

    除了第一阶段的能力,安装配置方面能够随意安装PHP和各种第三方扩展的编译安装配置;了解php-fpm的大部分配置选项和含义(如max_requests/max_children/request_terminate_timeout之类的影响性能的配置),知道mod_php/fastcgi的区别;在PHP方面已经能够熟练各种基础技术,还包括各种深入些的PHP,包括对PHP面向对象的深入理解/SPL/语法层面的特殊特性比如反射之类的;在框架方面已经阅读过最少一个以上常规PHP MVC框架的代码了,知道基本PHP框架内部实现机制和设计思想;在PHP开发中已经能够熟练使用常规的设计模式来应用开发(抽象工厂/单例/观察者/命令链/策略/适配器 等模式);建议开发自己的PHP MVC框架来充分让开发自由化,让自己深入理解MVC模式,也让自己能够在业务项目开发里快速升级;熟悉PHP的各种代码优化方法,熟悉大部分PHP安全方面问题的解决处理;熟悉基本的PHP执行的机制原理(Zend引擎/扩展基本工作机制)。

    6. C/C++

    开始涉猎一定的C/C++语言,能够写基本的C/C++代码,对基本的C/C++语法熟悉(指针、数组操作、字符串、常规标准API)和数据结构(链表、树、哈希、队列)有一定的熟悉下;对Linux下面的C语言开发有基本的了解概念,会简单的makefile文件编写,能够使用简单的GCC/GDB的程序编译简单调试工作;对基本的网络编程有大概了解。(本项是为了向更高层次打下基础)。

    7. 前端

    在第一阶段的基础上面,熟悉基本的HTTP协议(协议代码200/300/400/500,基本的HTTP交互头);条件允许,可以在深入写出稍微优雅的HTML+CSS+JavaScript,或者能够大致简单使用某些前端框架(jQuery/YUI/ExtJS/RequireJS/BootStrap之类);如果条件允许,可以深入学习JavaScript编程,比如闭包机制、DOM处理;再深入些可以读读jQuery源码做深入学习。(本项不做重点学习,除非对前端有兴趣)。

    8. 系统设计

    能够设计大部分中型系统的网站架构、数据库、基本PHP框架选型;性能测试排查处理等;能够完成类似:浏览器 -> CDN(Squid) -> Nginx+PHP -> 缓存 -> 数据库 结构网站的基本设计开发维护;能够支撑每天数百万到千万流量基本网站的开发维护工作;

    第三阶段:高级阶段 (高级PHP程序员)

    重点:除了基本的LNMP程序,还能够在某个方向或领域有深入学习。(纵深维度发展) 目标:除了能够完成基本的PHP业务开发,还能够解决大部分深入复杂的技术问题,并且可以独立设计完成中大型的系统设计和开发工作;自己能够独立hold深入某个技术方向,在这块比较专业。(比如在MySQL、Nginx、PHP、Redis等等任一方向深入研究)

    1. Linux

    除了第二阶段的能力,在Linux下面除了常规的操作和性能监控跟踪,还能够使用很多高级复杂的命令完成工作(watch/tcpmp/starce/ldd/ar等);在shell脚本方面,已经能够编写比较复杂的shell脚本(超过500行)来协助完成很多包括备份、自动化处理、监控等工作的shell;对awk/sed/perl 等应用已经如火纯青,能够随意操作控制处理文本统计分析各种复杂格式的数据;对Linux内部机制有一些了解,对内核模块加载,启动错误处理等等有个基本的处理;同时对一些其他相关的东西也了解,比如NFS、磁盘管理等等;

    2. Nginx

    在第二阶段的基础上面,已经能够把Nginx操作的很熟练,能够对Nginx进行更深入的运维工作,比如监控、性能优化,复杂问题处理等等;看个人兴趣,更多方面可以考虑侧重在关于Nginx工作原理部分的深入学习,主要表现在阅读源码开始,比如具体的master/worker工作机制,Nginx内部的事件处理,内存管理等等;同时可以学习Nginx扩展的开发,可以定制一些自己私有的扩展;同时可以对Nginx+Lua有一定程度的了解,看看是否可以结合应用出更好模式;这个阶段的要求是对Nginx原理的深入理解,可以考虑成为Nginx方向的深入专业者。

    3. MySQL/MongoDB

    在第二阶段的基础上面,在MySQL应用方面,除了之前的基本SQL优化,还能够在完成一些复杂操作,比如大批量数据的导入导出,线上大批量数据的更改表结构或者增删索引字段等等高危操作;除了安装配置,已经能够处理更多复杂的MySQL的问题,比如各种问题的追查,主从同步延迟问题的解决、跨机房同步数据方案、MySQL高可用架构等都有涉及了解;对MySQL应用层面,对MySQL的核心关键技术比较熟悉,比如事务机制(隔离级别、锁等)、对触发器、分区等技术有一定了解和应用;对MySQL性能方面,有包括磁盘优化(SAS迁移到SSD)、服务器优化(内存、服务器本身配置)、除了二阶段的其他核心性能优化选项(innodb_log_buffer_size/back_log/table_open_cache/thread_cache_size/innodb_lock_wait_timeout等)、连接池软件选择应用,对show *(show status/show profile)类的操作语句有深入了解,能够完成大部分的性能问题追查;MySQL备份技术的深入熟悉,包括灾备还原、对Binlog的深入理解,冷热备份,多IDC备份等;在MySQL原理方面,有更多了解,比如对MySQL的工作机制开始阅读部分源码,比如对主从同步(复制)技术的源码学习,或者对某个存储引擎(MyISAM/Innodb/TokuDB)等等的源码学习理解,如果条件允许,可以参考CSV引擎开发自己简单的存储引擎来保存一些数据,增强对MySQL的理解;在这个过程,如果自己有兴趣,也可以考虑往DBA方向发展。MongoDB层面,可以考虑比如说在写少读多的情况开始在线上应用MongoDB,或者是做一些线上的数据分析处理的操作,具体场景可以按照工作来,不过核心是要更好的深入理解RMDBS和NoSQL的不同场景下面的应用,如果条件或者兴趣允许,可以开始深入学习一下MongoDB的工作机制。

    4. Redis/Memcached

    在第二阶段的基础上面,能够更深入的应用和学习。因为Memcached不是特别复杂,建议可以把源码进行阅读,特别是内存管理部分,方便深入理解;Redis部分,可以多做一些复杂的数据结构的应用(zset来做排行榜排序操作/事务处理用来保证原子性在秒杀类场景应用之类的使用操作);多涉及aof等同步机制的学习应用,设计一个高可用的Redis应用架构和集群;建议可以深入的学习一下Redis的源码,把在第二阶段积累的知识都可以应用上,特别可以阅读一下包括核心事件管理、内存管理、内部核心数据结构等充分学习了解一下。如果兴趣允许,可以成为一个Redis方面非常专业的使用者。

    5. PHP

    作为基础核心技能,我们在第二阶段的基础上面,需要有更深入的学习和应用。从基本代码应用上面来说,能够解决在PHP开发中遇到95%的问题,了解大部分PHP的技巧;对大部分的PHP框架能够迅速在一天内上手使用,并且了解各个主流PHP框架的优缺点,能够迅速方便项目开发中做技术选型;在配置方面,除了常规第二阶段会的知识,会了解一些比较偏门的配置选项(php auto_prepend_file/auto_append_file),包括扩展中的一些复杂高级配置和原理(比如memcached扩展配置中的memcache.hash_strategy、apc扩展配置中的apc.mmap_file_mask/apc.slam_defense/apc.file_update_protection之类的);对php的工作机制比较了解,包括php-fpm工作机制(比如php-fpm在不同配置机器下面开启进程数量计算以及原理),对zend引擎有基本熟悉(vm/gc/stream处理),阅读过基本的PHP内核源码(或者阅读过相关文章),对PHP内部机制的大部分核心数据结构(基础类型/Array/Object)实现有了解,对于核心基础结构(zval/hashtable/gc)有深入学习了解;能够进行基本的PHP扩展开发,了解一些扩展开发的中高级知识(minit/rinit等),熟悉php跟apache/nginx不同的通信交互方式细节(mod_php/fastcgi);除了开发PHP扩展,可以考虑学习开发Zend扩展,从更底层去了解PHP。

    6. C/C++

    在第二阶段基础上面,能够在C/C++语言方面有更深入的学习了解,能够完成中小型C/C++系统的开发工作;除了基本第二阶段的基础C/C++语法和数据结构,也能够学习一些特殊数据结构(b-tree/rb-tree/skiplist/lsm-tree/trie-tree等)方便在特殊工作中需求;在系统编程方面,熟悉多进程、多线程编程;多进程情况下面了解大部分多进程之间的通信方式,能够灵活选择通信方式(共享内存/信号量/管道等);多线程编程能够良好的解决锁冲突问题,并且能够进行多线程程序的开发调试工作;同时对网络编程比较熟悉,了解多进程模型/多线程模型/异步网络IO模型的差别和选型,熟悉不同异步网络IO模型的原理和差异(select/poll/epoll/iocp等),并且熟悉常见的异步框架(ACE/ICE/libev/libevent/libuv/Boost.ASIO等)和使用,如果闲暇也可以看看一些国产自己开发的库(比如muo);同时能够设计好的高并发程序架构(leader-follow/master-worker等);了解大部分C/C++后端Server开发中的问题(内存管理、日志打印、高并发、前后端通信协议、服务监控),知道各个后端服务RPC通信问题(struct/http/thirft/protobuf等);能够更熟络的使用GCC和GDB来开发编译调试程序,在线上程序core掉后能够迅速追查跟踪解决问题;通用模块开发方面,可以积累或者开发一些通用的工具或库(比如异步网络框架、日志库、内存池、线程池等),不过开发后是否应用要谨慎,省的埋坑去追bug。

    7. 前端

    深入了解HTTP协议(包括各个细致协议特殊协议代码和背后原因,比如302静态文件缓存了,502是nginx后面php挂了之类的);除了之前的前端方面的各种框架应用整合能力,前端方面的学习如果有兴趣可以更深入,表现形式是,可以自己开发一些类似jQuery的前端框架,或者开发一个富文本编辑器之类的比较琐碎考验JavaScript功力。

    8. 其他领域语言学习

    在基础的PHP/C/C++语言方面有基本积累,建议在当前阶段可以尝试学习不同的编程语言,看个人兴趣爱好,脚本类语言可以学学 Python/Ruby 之类的,函数式编程语言可以试试 Lisp/Haskell/Scala/Erlang 之类的,静态语言可以试试 Java/Golang,数据统计分析可以了解了解R语言,如果想换个视角做后端业务,可以试试 Node.js还有前面提到的跟Nginx结合的Nginx_Lua等。学习不同的语言主要是提升自己的视野和解决问题手段的差异,比如会了解除了进程/线程,还有轻量级协程;比如在跨机器通信场景下面,Erlang的解决方案简单的惊人;比如在不想选择C/C++的情况下,还有类似高效的Erlang/Golang可用等等;主要是提升视野。

    9. 其他专业方向学习

    在本阶段里面,会除了基本的LNMP技能之外,会考虑一些其他领域知识的学习,这些都是可以的,看个人兴趣和长期的目标方向。目前情况能够选择的领域比较多,比如、云计算(分布式存储、分布式计算、虚拟机等),机器学习(数据挖掘、模式识别等,应用到统计、个性化推荐),自然语言处理(中文分词等),搜索引擎技术、图形图像、语音识别等等。除了这些高大上的,也有很多偏工程方面可以学习的地方,比如高性能系统、移动开发(Android/IOS)、计算机安全、嵌入式系统、硬件等方向。

    10. 系统设计

    系统设计在第二阶段的基础之上,能够应用掌握的经验技能,设计出比较复杂的中大型系统,能够解决大部分线上的各种复杂系统的问题,完成类似 浏览器 -> CDN -> 负载均衡 ->接入层 -> Nginx+PHP -> 业务缓存 -> 数据库 -> 各路复杂后端RPC交互(存储后端、逻辑后端、反作弊后端、外部服务) -> 更多后端 酱紫的复杂业务;能够支撑每天数千万到数亿流量网站的正常开发维护工作。

❽ 虚拟主机搭建小说站PHP符合条件但是显示错误

nginx 配置虚拟主
502错误是所有用nginx跑php的运维人员不愿意看见的
nginx出现502有很多原因,但大部分原因可以归结为资源数量不够用,也就是说后端php-fpm处理有问题,nginx将正确的客户端请求发给了后端的php-fpm进程,但是因为php-fpm进程的问题导致不能正确解析php代码,最终返回给了客户端502错误。
服务器出现502的原因是连接超时 我们向服务器发送请求 由于服务器当前链接太多,导致服务器方面无法给于正常的响应,产生此类报错
因此如果你服务器并发量非常大,那只能先增加机器,然后按以下方式优化会取得更好效果;但如果你并发不大却出现502,一般都可以归结为配置问题,脚本超时问题。
1.php-fpm进程数不够用

使用 netstat -napo |grep "php-fpm" | wc -l 查看一下当前fastcgi进程个数,如果个数接近conf里配置的上限,就需要调高进程数。
但也不能无休止调高,可以根据服务器内存情况,可以把php-fpm子进程数调到100或以上,在4G内存的服务器上200就可以。
2. 调高调高linux内核打开文件数量

可以使用这些命令(必须是root帐号)
echo 'ulimit -HSn 65536' >> /etc/profile
echo 'ulimit -HSn 65536' >> /etc/rc.local
source /etc/profile
3.脚本执行时间超时

如果脚本因为某种原因长时间等待不返回 ,导致新来的请求不能得到处理,可以适当调小如下配置。
nginx.conf里面主要是如下
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
php-fpm.conf里如要是如下
request_terminate_timeout = 10s
4.缓存设置比较小

修改或增加配置到nginx.conf
proxy_buffer_size 64k;
proxy_buffers 512k;
proxy_busy_buffers_size 128k;
5. recv() failed (104: Connection reset by peer) while reading response header from upstream

可能的原因机房网络丢包或者机房有硬件防火墙禁止访问该域名
但最重要的是程序里要设置好超时,不要使用php-fpm的request_terminate_timeout,
最好设成request_terminate_timeout=0;
因为这个参数会直接杀掉php进程,然后重启php进程,这样前端nginx就会返回104: Connection reset by peer。这个过程是很慢,总体感觉就是网站很卡。
May 01 10:50:58.044162 [WARNING] [pool www] child 4074, script '/usr/local/nginx/html/quancha/sameip/detail.php' execution timed out (15.129933 sec), terminating
May 01 10:50:58.045725 [WARNING] [pool www] child 4074 exited on signal 15 SIGTERM after 90.227060 seconds from start
May 01 10:50:58.046818 [NOTICE] [pool www] child 4082 started
说一千道一万最重要的就是程序里控制好超时,gethostbyname、curl、file_get_contents等函数的都要设置超时时间。
另一个就是多说,这个东西是增加了网站的交互性,但是使用的多了反应就慢了,如果你网站超时且使用了多说是,可以关闭它。
转载请保留 http://www.nginx.cn/102.html
机访问PHP文件 502错误的解决方法

❾ PHP 中的 cookie 问题

发错地方了!
PHP中使用cookie 1、设置Cookie

PHP用SetCookie函数来设置Cookie。必须注意的一点是:Cookie是HTTP协议头的一部分,用于浏览器和服务器之间传递信息,所以必须在任何属于HTML文件本身的内容输出之前调用Cookie函数。
SetCookie函数定义了一个Cookie,并且把它附加在HTTP头的后面,SetCookie函数的原型如下:
int SetCookie(string name, string value, int expire, string path, string domain, int secure);
除了name之外所有的参数都是可选的。value,path,domain三个参数可以用空字符串代换,表示没有设置;expire 和 secure两个参数是数值型的,可以用0表示。expire参数是一个标准的Unix时间标记,可以用time()或mktime()函数取得,以秒为单位。secure参数表示这个Cookie是否通过加密的HTTPS协议在网络上传输。
当前设置的Cookie不是立即生效的,而是要等到下一个页面时才能看到.这是由于在设置的这个页面里Cookie由服务器传递给客户浏览器,在下一个页面浏览器才能把Cookie从客户的机器里取出传回服务器的原因。
在同一个页面设置Cookie,实际是从后往前,所以如果要在插入一个新的Cookie之前删掉一个,必须先写插入的语句,再写删除的语句,否则可能会出现不希望的结果。
来看几个例子:
简单的:
SetCookie("MyCookie", "Value of MyCookie");
带失效时间的:
SetCookie("WithExpire", "Expire in 1 hour", time()+3600);//3600秒=1小时
什么都有的:
SetCookie("FullCookie", "Full cookie value", time()+3600, "/forum", ".phpuser.com", 1);

这里还有一点要说明的,比如站点有几个不同的目录,那么如果只用不带路径的Cookie的话,在一个目录下的页面里设的Cookie在另一个目录的页面里是看不到的,也就是说,Cookie是面向路径的。实际上,即使没有指定路径,WEB服务器会自动传递当前的路径给浏览器的,指定路径会强制服务器使用设置的路径。解决这个问题的办法是在调用SetCookie时加上路径和域名,域名的格式可以是“www.phpuser.com”,也可是“.phpuser.com”。
SetCookie函数里表示value的部分,在传递时会自动被encode,也就是说,如果value的值是“test value”在传递时就变成了“test%20value”,跟URL的方法一样。当然,对于程序来说这是透明的,因为在PHP接收Cookie的值时会自动将其decode。
如果要设置同名的多个Cookie,要用数组,方法是:
SetCookie("CookieArray[]", "Value 1");
SetCookie("CookieArray[]", "Value 2");

SetCookie("CookieArray[0]", "Value 1");
SetCookie("CookieArray[1]", "Value 2");

2、接收和处理Cookie

PHP对Cookie的接收和处理的支持非常好,是完全自动的,跟FORM变量的原则一样,特别简单。
比如设置一个名为MyCookier的Cookie,PHP会自动从WEB服务器接收的HTTP头里把它分析出来,并形成一个与普通变量一样的变量,名为$myCookie,这个变量的值就是Cookie的值。数组同样适用。另外一个办法是引用PHP的全局变量$HTTP_COOKIE_VARS数组。
分别举例如下:(假设这些都在以前的页面里设置过了,并且仍然有效)
echo $MyCookie;
echo $CookieArray[0];
echo count($CookieArray);
echo $HTTP_COOKIE_VARS["MyCookie"];
就这么简单。

3、删除Cookie

要删除一个已经存在的Cookie,有两个办法:
一是调用只带有name参数的SetCookie,那么名为这个name的Cookie将被从关系户机上删掉;另一个办法是设置Cookie的失效时间为time()或time()-1,那么这个Cookie在这个页面的浏览完之后就被删除了(其实是失效了)。
要注意的是,当一个Cookie被删除时,它的值在当前页在仍然有效的。

4、使用Cookie的限制

首先是必须在HTML文件的内容输出之前设置;
其次不同的浏览器对Cookie的处理不一致辞,且有时会出现错误的结果。
第三个限制是在客户端的。一个浏览器能创建的Cookie数量最多为30个,并且每个不能超过4KB,每个WEB站点能设置的Cookie总数不能超过20个。

❿ 电脑高手

http://sdvick.bbs.topzj.com/viewthread.php?tid=5568
建议自己去看 很详细很多 还有图~我只能弄来一部分。

什么是超频?

超频是使得各种各样的电脑部件运行在高于额定速度下的方法。例如,如果你购买了一颗Pentium 4 3.2GHz处理器,并且想要它运行得更快,那就可以超频处理器以让它运行在3.6GHz下。

郑重声明!

警告:超频可能会使部件报废。超频有风险,如果超频的话整台电脑的寿命可能会缩短。如果你尝试超频的话,我将不对因为使用这篇指南而造成的任何损坏负责。这篇指南只是为那些大体上接受这篇超频指南/FAQ以及超频的可能后果的人准备的。

为什么想要超频?是的,最明显的动机就是能够从处理器中获得比付出更多的回报。你可以购买一颗相对便宜的处理器,并把它超频到运行在贵得多的处理器的速度下。如果愿意投入时间和努力的话,超频能够省下大量的金钱;如果你是一个象我一样的狂热玩家的话,超频能够带给你比可能从商店买到的更快的处理器。

超频的危险

首先我要说,如果你很小心并且知道要做什么的话,那对你来说,通过超频要对计算机造成任何永久性损伤都是非常困难的。如果把系统超得太过的话,会烧毁电脑或无法启动。但仅仅把它推向极限是很难烧毁系统的。

然而仍有危险。第一个也是最常见的危险就是发热。在让电脑部件高于额定参数运行的时候,它将产生更多的热量。如果没有充分散热的话,系统就有可能过热。不过一般的过热是不能摧毁电脑的。由于过热而使电脑报废的唯一情形就是再三尝试让电脑运行在高于推荐的温度下。就我说,应该设法抑制在60 C以下。

不过无需过度担心过热问题。在系统崩溃前会有征兆。随机重启是最常见的征兆了。过热也很容易通过热传感器的使用来预防,它能够显示系统运行的温度。如果你看到温度太高的话,要么在更低的速度下运行系统,要么采用更好的散热。稍后我将在这篇指南中讨论散热。

超频的另一个“危险”是它可能减少部件的寿命。在对部件施加更高的电压时,它的寿命会减少。小小的提升不会造成太大的影响,但如果打算进行大幅超频的话,就应该注意寿命的缩短了。然而这通常不是问题,因为任何超频的人都不太可能会使用同一个部件达四、五年之久,并且也不可能说任何部件只要加压就不能撑上4-5年。大多数处理器都是设计为最高使用10年的,所以在超频者的脑海中,损失一些年头来换取性能的增加通常是值得的。
基础知识

为了了解怎样超频系统,首先必须懂得系统是怎样工作的。用来超频最常见的部件就是处理器了。

在购买处理器或CPU的时候,会看到它的运行速度。例如,Pentium 4 3.2GHz CPU运行在3200MHz下。这是对一秒钟内处理器经历了多少个时钟周期的度量。一个时钟周期就是一段时间,在这段时间内处理器能够执行给定数量的指令。所以在逻辑上,处理器在一秒内能完成的时钟周期越多,它就能够越快地处理信息,而且系统就会运行得越快。1MHz是每秒一百万个时钟周期,所以3.2GHz的处理器在每秒内能够经历3,200,000,000或是3十亿200百万个时钟周期。相当了不起,对吗?

超频的目的是提高处理器的GHz等级,以便它每秒钟能够经历更多的时钟周期。计算处理器速度的公式是这个:

FSB(以MHz为单位)×倍频 = 速度(以MHz为单位)。

现在来解释FSB和倍频是什么:

FSB(对AMD处理器来说是HTT*),或前端总线,就是整个系统与CPU通信的通道。所以,FSB能运行得越快,显然整个系统就能运行得越快。

CPU厂商已经找到了增加CPU的FSB有效速度的方法。他们只是在每个时钟周期中发送了更多的指令。所以CPU厂商已经有每个时钟周期发送两条指令的办法(AMD CPU),或甚至是每个时钟周期四条指令(Intel CPU),而不是每个时钟周期发送一条指令。那么在考虑CPU和看FSB速度的时候,必须认识到它不是真正地在那个速度下运行。Intel CPU是“四芯的”,也就是它们每个时钟周期发送4条指令。这意味着如果看到800MHz的FSB,潜在的FSB速度其实只有200MHz,但它每个时钟周期发送4条指令,所以达到了800MHz的有效速度。相同的逻辑也适用于AMD CPU,不过它们只是“二芯的”,意味着它们每个时钟周期只发送2条指令。所以在AMD CPU上400MHz的FSB是由潜在的200MHz FSB每个时钟周期发送2条指令组成的。

这是重要的,因为在超频的时候将要处理CPU真正的FSB速度,而不是有效CPU速度。

速度等式的倍频部分也就是一个数字,乘上FSB速度就给出了处理器的总速度。例如,如果有一颗具有200MHz FSB(在乘二或乘四之前的真正FSB速度)和10倍频的CPU,那么等式变成:

(FSB)200MHz×(倍频)10 = 2000MHz CPU速度,或是2.0GHz。

在某些CPU上,例如Intel自1998年以来的处理器,倍频是锁定不能改变的。在有些上,例如AMD Athlon 64处理器,倍频是“封顶锁定”的,也就是可以改变倍频到更低的数字,但不能提高到比最初的更高。在其它的CPU上,倍频是完全放开的,意味着能够把它改成任何想要的数字。这种类型的CPU是超频极品,因为可以简单地通过提高倍频来超频CPU,但现在非常罕见了。

在CPU上提高或降低倍频比FSB容易得多了。这是因为倍频和FSB不同,它只影响CPU速度。改变FSB时,实际上是在改变每个单独的电脑部件与CPU通信的速度。这是在超频系统的所有其它部件了。这在其它不打算超频的部件被超得太高而无法工作时,可能带来各种各样的问题。不过一旦了解了超频是怎样发生的,就会懂得如何去防止这些问题了。

* 在AMD Athlon 64 CPU上,术语FSB实在是用词不当。本质上并没有FSB。FSB被整合进了芯片。这使得FSB与CPU的通信比Intel的标准FSB方法快得多。它还可能引起一些混乱,因为Athlon 64上的FSB有时可能被说成HTT。如果看到某些人在谈论提高Athlon 64 CPU上的HTT,并且正在讨论认可为普通FSB速度的速度,那么就把HTT当作FSB来考虑。在很大程度上,它们以相同的方式运行并且能够被视为同样的事物,而把HTT当作FSB来考虑能够消除一些可能发生的混淆。

怎样超频

那么现在了解了处理器怎样到达它的额定速度了。非常好,但怎样提高这个速度呢?

超频最常见的方法是通过BIOS。在系统启动时按下特定的键就能进入BIOS了。用来进入BIOS最普通的键是Delete键,但有些可能会使用象F1,F2,其它F按钮,Enter和另外什么的键。在系统开始载入Windows(任何使用的OS)之前,应该会有一个屏幕在底部显示要使用什么键的。

假定BIOS支持超频*,那一旦进到BIOS,应该可以使用超频系统所需要的全部设置。最可能被调整的设置有:

倍频,FSB,RAM延时,RAM速度及RAM比率。

在最基本的水平上,你唯一要设法做到的就是获得你所能达到的最高FSB×倍频公式。完成这个最简单的办法是提高倍频,但那在大多数处理器上无法实现,因为倍频被锁死了。其次的方法就是提高FSB。这是相当具局限性的,所有在提高FSB时必须处理的RAM问题都将在下面说明。一旦找到了CPU的速度极限,就有了不只一个的选择了。

如果你实在想要把系统推到极限的话,为了把FSB升得更高就可以降低倍频。要明白这一点,想象一下拥有一颗2.0GHz的处理器,它采用200MHz FSB和10倍频。那么200MHz×10 = 2.0GHz。显然这个等式起作用,但还有其它办法来获得2.0GHz。可以把倍频提高到20而把FSB降到100MHz,或者可以把FSB升到250MHz而把倍频降低到8。这两个组合都将提供相同的2.0GHz。那么是不是两个组合都应该提供相同的系统性能呢?

不是的。因为FSB是系统用来与处理器通信的通道,应该让它尽可能地高。所以如果把FSB降到100MHz而把倍频提高到20的话,仍然会拥有2.0GHz的时钟速度,但系统的其余部分与处理器通信将会比以前慢得多,导致系统性能的损失。

在理想情况下,为了尽可能高地提高FSB就应该降低倍频。原则上,这听起来很简单,但在包括系统其它部分时会变得复杂,因为系统的其它部分也是由FSB决定的,首要的就是RAM。这也是我在下一节要讨论的。

* 大多数的零售电脑厂商使用不支持超频的主板和BIOS。你将不能从BIOS访问所需要的设置。有工具允许从Windows系统进行超频,但我不推荐使用它们,因为我从未亲自试验过。

RAM及它对超频的影响

如我之前所说的,FSB是系统与CPU通信的路径。所以提高FSB也有效地超频了系统的其余部件。

受提高FSB影响最大的部件就是RAM。在购买RAM时,它是被设定在某个速度下的。我将使用表格来显示这些速度:

PC-2100 - DDR266
PC-2700 - DDR333
PC-3200 - DDR400
PC-3500 - DDR434
PC-3700 - DDR464
PC-4000 - DDR500
PC-4200 - DDR525
PC-4400 - DDR550
PC-4800 - DDR600

要了解这个,就必须首先懂得RAM是怎样工作的。RAM(Random Access Memory,随机存取存储器)被用作CPU需要快速存取的文件的临时存储。例如,在载入游戏中平面的时候,CPU会把平面载入到RAM以便它能在任何需要的时候快速地访问信息,而不是从相对慢的硬盘载入信息。

要知道的重要一点就是RAM运行在某个速度下,那比CPU速度低得多。今天,大多数RAM运行在133MHz至300MHz之间的速度下。这可能会让人迷惑,因为那些速度没有被列在我的图表上。

这是因为RAM厂商仿效了CPU厂商的做法,设法让RAM在每个RAM时钟周期发送两倍的信息*。这就是在RAM速度等级中DDR的由来。它代表了Double Data Rate(两倍数据速度)。所以DDR 400意味着RAM在400MHz的有效速度下运转,DDR 400中的400代表了时钟速度。因为它每个时钟周期发送两次指令,那就意味着它真正的工作频率是200MHz。这很像AMD的“二芯”FSB。

那么回到RAM上来。之前有列出DDR PC-4000的速度。PC-4000等价于DDR 500,那意味着PC-4000的RAM具有500MHz的有效速度和潜在的250MHz时钟速度。

所以超频要做什么呢?

如我之前所说的,在提高FSB的时候,就有效地超频了系统中的其它所有东西。这也包括RAM。额定在PC-3200(DDR 400)的RAM是运行在最高200MHz的速度下的。对于不超频的人来说,这是足够的,因为FSB无论如何不会超过200MHz。

不过在想要把FSB升到超过200MHz的速度时,问题就出现了。因为RAM只额定运行在最高200MHz的速度下,提高FSB到高于200MHz可能会引起系统崩溃。这怎样解决呢?有三个解决办法:使用FSB:RAM比率,超频RAM或是购买额定在更高速度下的RAM。

因为你可能只了解那三个选择中的最后一个,所以我将来解释它们:

FSB:RAM比率:如果你想要把FSB提高到比RAM支持的更高的速度,可以选择让RAM运行在比FSB更低的速度下。这使用FSB:RAM比率来完成。基本上,FSB:RAM比例允许选择数字以在FSB和RAM速度之间设立一个比率。假设你正在使用的是PC-3200(DDR 400)RAM,我之前提到过它运行在200MHz下。但你想要提高FSB到250MHz来超频CPU。很明显,RAM将不支持升高的FSB速度并很可能会引起系统崩溃。为了解决这个,可以设立5:4的FSB:RAM比率。基本上这个比率就意味着如果FSB运行在5MHz下,那么RAM将只运行在4MHz下。

更简单来说,把5:4的比率改成100:80比率。那么对于FSB运行在100MHz下,RAM将只运行在80MHz下。基本上这意味着RAM将只运行在FSB速度的80%下。那么至于250MHz的目标FSB,运行在5:4的FSB:RAM比率中,RAM将运行在200MHz下,那是250MHz的80%。这是完美的,因为RAM被额定在200MHz。

然而,这个解决办法不理想。以一个比率运行FSB和RAM导致了FSB与RAM通信之间的时间差。这引起减速,而如果RAM与FSB运行在相同速度下的话是不会出现的。如果想要获得系统的最大速度的话,使用FSB:RAM比率不会是最佳方案。

超频RAM

超频RAM实在是非常简单的。超频RAM的原则跟超频CPU是一样的:让RAM运行在比它被设定运行的更高的速度下。幸好两种超频之间的类似之处很多,否则RAM超频会比想象中复杂得多。

要超频RAM,只需要进入BIOS并尝试让RAM运行在比额定更高的速度下。例如,可以设法让PC-3200(DDR 400)的RAM运行在210MHz的速度下,这会超过额定速度10MHz。这可能没事,但在某些情况下会导致系统崩溃。如果这发生了,不要惊慌。通过提高RAM电压,问题能够相当容易地解决。RAM电压,也被称为vdimm,在大多数BIOS中是能够调节的。用最小的可用增量提高它,并测试每个设置以观察它是否运转。一旦找到一个运转的设置,可以要么保持它,要么尝试进一步提高RAM。然而,如果给RAM加太多电压的话,它可能会报废。

在超频RAM时你只还需要担心另一件事,就是延时。这些延时是在某些RAM运行之间的延迟。基本上,如果你想要提高RAM速度的话,可能就不得不提高延时。不过它还没有复杂到那种程度,不应该难到无法理解的。
回答者:虎虎声风 - 秀才 二级 1-18 22:47
评价已经被关闭 目前有 0 个人评价

50% (0) 不好
50% (0)

其他回答共 1 条
超频简介

所谓超频,实际上就是指让电脑的配件在高于标准频率下工作的一行为。其中主要包括CPU的超频,显卡的超频,以及内存的超频,而CPU的超频较早出现。其实早期的 超频行为实在是一种无奈,为了追求高效率,而那时的配件贵的出奇,无奈之下才超频应用的,而现在虽然有一少部分人是为了花较少的钱而达到较高的性能(其机器若不超频的话应用会有一定困难),即追求性价比而超频的,其实更大一部分人纯粹就是一种跟风,别人说2500+能超到3200+,就去买2500+接着就去超,不知道那种人有没有想过,自己的2500+到底够不够用。还有一少部分人,那就是超频纯粹就是为了追求高数字,这种人也许不玩游戏,电脑很少干别的,进行最多的就是测试,对高性能的配件很感冒,这种人有一个共同的特点,那就是有钱!最后一类,是对超频有一定的兴趣,但是很少让电脑长时间的超频应用(因为胆子小^_^),仅仅是看看自己的电脑到底能不能超,我就是这种人。

而高于标准频率工作,自然会对该硬件造成一定的损坏,有的损坏是缓慢的,有的则是瞬间的,你的CPU就可能Biu---的一下爆掉!而一般正常应用之下,一个CPU估计能用个十多年到20年,显然我们用电脑不能用那么久,如果能够适当的超超频,不让CPU发生瞬间的损坏,让损坏缓慢发生,这样又可以体验到高性能,又不会很快坏掉,这样岂不爽哉? 其实这就是许多人超频的原动力,具体是怎么样,应该是见仁见智,有的人中意超频,而有的人就是讨厌超频,讨厌的有两类,一类是因不了解而惧怕的讨厌,还有一类就是曾经受过伤害而讨厌。而我是那种喜欢超频,但是不推荐超频的人,尤其是超频应用,主要因为太菜,不敢超的太狠!但是我觉得在一点一点的超频的联系练习中可以学到很多东西

热点内容
滑板鞋脚本视频 发布:2025-02-02 09:48:54 浏览:432
群晖怎么玩安卓模拟器 发布:2025-02-02 09:45:23 浏览:557
三星安卓12彩蛋怎么玩 发布:2025-02-02 09:44:39 浏览:743
电脑显示连接服务器错误 发布:2025-02-02 09:24:10 浏览:537
瑞芯微开发板编译 发布:2025-02-02 09:22:54 浏览:146
linux虚拟机用gcc编译时显示错误 发布:2025-02-02 09:14:01 浏览:233
java驼峰 发布:2025-02-02 09:13:26 浏览:651
魔兽脚本怎么用 发布:2025-02-02 09:10:28 浏览:532
linuxadobe 发布:2025-02-02 09:09:43 浏览:212
sql2000数据库连接 发布:2025-02-02 09:09:43 浏览:726