Aztic wrote:
PHP程式設計師現在人才荒...國內一些比較軟體或遊戲龍頭級的..
光底薪6萬還沒加獎金都找不到人了..更何況你底薪4-5萬的...
PHP程式設計師現在人才荒,
可是在台南總是看到你開個接近四萬的薪水面試官就一臉難色的模樣
shajou wrote:十幾年沒碰了,我回憶一下當時有遇過的瓶頸,如果有錯誤或沒有妥善的地方,請包涵。
應該這樣講,會寫php的人很多,但精通php的人太少,現在缺的是"人才",不是庸才
當目前的程式及sql遇到瓶頸,身為一個後端工程,有沒有什麼辦法可以解決改善它? 可以試著舉例並說明嗎?
我問這個題目,沒幾個人有辦法回答,我會依據面試者在交談過程及履歷中所具備的知識及程度,來觀察面試者對這一題的回答,我想問的是解決問題的思維跟流程,答案沒有對錯與否,但連敢動筆寫的都沒幾個
如前面所說,PHP是Script,MySQL是文字型態的DB,運算效率的先天條件本身就有所限制,當時我所遇到的瓶頸是瞬間的大量資料運算會造成MySQL的Table Lock,PHP大量的echo資料也會造成User瀏覽器的負担及頻寬的浪費。
瀏覽器端我嘗試著用Javascript去layout HTML,用PHP寫出含陣列的文字檔,再交給Javascript layout畫面,確實替公司省下了不少頻寬,但也遇到了一個問題,當User端的電腦等級沒那麼高時,Javascript的效率就會降低,甚至當機......
當然PHP的運算效率除了可藉由Apache的內部參數設定優化外,寫法上該if就if,該switch就switch,這些小細節可能在一兩支程式看不出效能,但多重運算下效率就能積少成多。
一台機器不能解決的事就只能靠多台機器解決,當時運用的是BIGIP的Loading Balance,將一台機器多最可承載256的連線數弄成多台機器可承載256xN。
運算解決了,但多台PHP運算對MySQL也會造成負担,MySQL有Master & Slave的功能,將會變更DB Data的語法集中在Master(這是廢話),Select、SUM、Join等語法集在中Slave,Master對Slave可以一對多。
另外還有好多的小細節,像瞬間式的大量Update也會造成Table Lock,是否用Insert取代Update?User端屬於Public的資訊能不進DB就不進DB,可寫一支Perl當CGI在背景執行,一偵測到Table資料有變動就重新寫一份Data給前端等等等等.........
這都是十幾年前的往事了,或許現在有新的技術或版本可優化也不知道,畢竟離開那個環境太久了。
君顏甚厚,汝母知否?
絕代蝴蝶 wrote:
十幾年沒碰了,我回...(恕刪)
應對的方法跟流程都非常標準,沒什麼問題,剩下 table 的優化還是得靠當下 query 的需求來做調整,現在多了 memcache、redis、mongo 等 nosql 的技術,可以依資料重要程度、取資料頻繁程度,將要餵給使用者的資料依需求利用 nosql 做存取
再依照整站的請求及運算重要程度,平均將負載分配給前端、web server、sql server
javscript 的性能問題,盡量利用原生語法來 layout 畫面,且一次將 html 串起會比一筆筆的將資料填在畫面上還擁有更佳的效能
盡量做到利用 getElementById 來操作元素
在偵測使用者端資料變更的方法上可以創建一個虛擬 dom 來模擬瀏覽器的 dom 結構,藉以偵測資料新增、移除、更新的狀態,效能也會差很多
如果來應徵的人有閣下具備的知識及解決問題的思維及方法,以僅專精後端工程(php及對mysql存取專業調整由dba處理)的這項領域的話,我應會給至少10萬的起薪(不包含任何加給)
內文搜尋

X