當前位置:首頁 » 編程語言 » 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