PHP工程師面臨成長瓶頸
先明確這裡所指的PHP工程師,是指主要以PHP進行Web系統的開發,沒有使用其的語言工作過。工作經驗大概在3~4年,普通的Web系統(百萬級訪問,千成級數據以內或業務邏輯不是特別複雜)開發起基本得心應手,沒有什麼問題。但他們會這樣的物點:
◆除了PHP不使用其它的語言,可能會點shell 腳本。
◆對PHP的掌握不精(很多PHP手冊都沒有看完,庫除外)。
◆知識面比較窄(面對需求,除開使用PHP和MySQL ,不知道其它的解決方法)。
◆PHP程式碼以流程為主,認為物件導向的實作太繞,看不懂。
這些PHPer在遇到需要高效能,處理高並發,大量資料的專案或業務邏輯比較複雜(系統需要解決多領域業務的問題)時,缺乏思路。不能分析問題的本質,技術判斷力比較差,對於問題較快能找出臨時的解決辦法,但常常在不斷臨時性的解決辦法中,系統和自己一步步走向崩潰。那怎麼提升自己呢?怎麼可以挑戰難度更高的系統?
更高的挑戰在那裡?
結合自己的經驗,我列出一些具體挑戰,讓大家先有個感性的認識。
高效能係統的挑戰在那裡?
◆如何選擇Web伺服器?若要不要使用fast-cgi 模式;
◆要不要使用反向代理服務?選擇全記憶體快取還是硬碟快取?
◆是否需要負載平衡?是基於應用層,還是網路層?如何保證高可靠性?
◆你的PHP程式碼效能如何,使用最佳化工具後呢?效能瓶頸在那裡?是否需要寫成C的擴充?
◆用戶存取有什麼特色,是讀多還是寫多?是否需要讀寫分離?
◆資料如何儲存?寫入速度和讀出速度如何?資料增漲存取速讀如何變化?
◆如何使用快取?怎麼樣考慮失效?數據的一致性怎麼保證?
高複雜性系統的挑戰在那裡?
◆能否辨識業務所對應的領域?是一個還是多個?
◆能否合理地對業務進行抽象,在業務規則變化能以很小的代價實現?
◆資料的一致性、安全性可否保證?
◆是否撐握了物件導向的分析與設計的方法
這裡所列出的問題,你都能肯定的回答,說明在技術上你基本上已經可能成為架構師了。如何你還不能回答,你需要在以下幾個方向加強。
怎麼樣提高,突破瓶頸
##如何你還不能回答,你需要在以下幾個方向加強:
◆分析你所使用的技術其原理和背後運作的機制,這樣可以提高你的技術判斷力,提高你技術方案選擇的正確性;◆學習大學期間重要的知識, 操作系統原理,資料結構和演算法。知道你以前學習都是為了考試,但現在你需要為自己學習,讓自己知其所以然;◆重新開始學習C語言,雖然你在大學已經學過。這不僅是因為你可能需要寫PHP擴展,而且還因為,在做C的應用中,有一個時刻關心效能、記憶體控制、變數生命週期、資料結構和演算法的環境;◆學習物件導向的分析與設計,它是解決複雜問題的有效的方法。學習抽象,它是解決複雜問題的唯一之道。 如何有效的學習是一個大問題。 “以架構為中心,使用用例驅動,迭代開發”,借用這個思想,關於有效的學習的方法,可以這樣來表述:以原理、模型或機制為中心,任務驅動,迭代學習。有點抽象, 舉例來說明如何學習。 目的:學習如何提升處理效能。 可迭代驅動的任務: 透過IP找到所在地域。這是Web應用程式常見的任務,IP資料庫是10左右萬行的記錄。第一次迭代: 不考慮效能的情況下實作功能(透過PHP來實現)
因為無法直接透過KEY(IP)進行尋找地域,所以直接放到資料或透過關聯數組這種簡單的方法都是不行的。想法還是先把資料排序,然後再進行查找:◆如何透過IP查找?已序的數據,二分查找是最快的。 ◆如何排序?用函式庫函數sort當然是可以,但是即然是學習,那還是自己實作快速排序吧。 學習目標: 排序演算法,找出演算法PHPer資料結構與演算法基礎比較差,平常也沒有這方面的任務,自己也不學習,因此這方面的知識很缺乏。但是,程式設計解決的問題,最終都會歸結到資料結構和對這種資料結構操作的演算法。如果資料結構演算法常在心中,那麼遇到問題就能清楚認知到它內在的結構,解決方法就會自然產生。第二次迭代:最佳化資料的載入與排序#
如果做到第一步,基本上還是不可用,因為資料每次都需要的載入和排序,這樣太耗時間。解決的想法是,資料一次載入排序後,放到每個PHP進程能存取到的地方。放到Memcache這是大家容易想到問題。其實放到共享記憶體(EA等加速器都支援)中是更快的方式,因為memcache還多了網路操作。資料是整體放入到共享內存,還是分塊放入,如何測試性能? 如何分析瓶頸所在(xdebug)? 在這些問題的驅動下你會學習到。
學習目標: 偵測、定位、最佳化PHP效能的方法; PHP實現結構對效能的影響。
第三次迭代: 寫PHP的擴充
效能還是上不去,必須進入C/C 的世界了,不過從此你將不只是PHPer而服務端的全能型工程師,當然這對沒有做過C/C 的同學挑戰是巨大的。
學習目標:C/C 的學習,PHP擴充的寫作
怎麼決定需要學習的機制和原則呢?怎麼找到驅動學習任務?我對需要學習的東西,都沒有概念,怎麼回答以上的兩個問題?從這個技術的定位來找出需要學習的重點,即它怎麼做到(機制)的和它為什麼能這樣做到。列出這個技術最常見的應用,做為學習的任務,從簡到難實踐。
假如我需要學習JavaScript,我對於HTML,CSS有點感性認識。首要要了解的是,JavaScript是Web領域的動態語言,主要解決網頁的動態互動的。那要學習的要點如下:
◆JavaScript如何與HTML互動 (機制)
◆JavaScript的動態特性在那裡,與其它動態語言有何不同? (語言模型)
如果完全自學,找到需要學習的重點(機制、模型、原理) 設定學習任務的確不是那麼容易掌握。如果找到一個有經驗的人來指導你或增加一個學習型的團隊,那麼學習的速度的確會大大提升。

在微信小程序中,PHP开发的翻页特效是非常常见的功能。通过这种特效,用户可以轻松地在不同的页面之间进行切换,浏览更多的内容。在本文中,我们将介绍如何使用PHP来实现微信小程序中的翻页特效。我们将会讲解一些基本的PHP知识和技巧,以及一些实际的代码示例。理解基本的PHP语言知识在PHP中,我们经常会用到IF/ELSE语句、循环结构,以及函数等一些基本语言知识。

随着微信小程序的普及和发展,越来越多的开发者开始涉足其中。而PHP作为一种后端技术的代表,也在小程序中得到了广泛的运用。在小程序的开发中,PHP常用工具库也是很重要的一个部分。本文将介绍几款比较实用的PHP常用工具库,供大家参考。一、EasyWeChatEasyWeChat是一个开源的微信开发工具库,用于快速开发微信应用。它提供了一些常用的微信接口,如微信公

网上购物已经成为人们日常生活中不可或缺的一部分,因此,越来越多的企业开始关注电商领域。开发一款实用、易用的商城网站也成为了企业提高销售额、拓展市场的必要手段之一。在商城网站中,满额赠礼功能是提高用户购买欲望和促进销售增长的重要功能之一。本文将探讨如何利用PHP开发商城的满额赠礼功能。一、满额赠礼功能的实现思路在商城开发中,如何实现满额赠礼功能呢?简单来说就是

随着微信小程序在移动应用市场中越来越流行,它的开发也受到越来越多的关注。在小程序中,PHP作为一种常用的后端语言,经常用于处理敏感数据的加密和解密。本文将介绍在微信小程序中如何使用PHP实现加密和解密。一、什么是加密和解密?加密是将敏感数据转换为不可读的形式,以确保数据在传输过程中不被窃取或篡改。解密是将加密数据还原为原始数据。在小程序中,加密和解密通常包括

本篇文章给大家推荐一些VSCode+PHP开发中实用的插件。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

作为目前最流行的社交媒体平台之一,微信已经成为了企业和个人互动沟通的重要渠道之一。而微信小程序则更加方便用户使用和开发者创新。在小程序开发中,PHP是一种重要的后端技术,但是在开发过程中很容易出现状态码和错误处理方面的问题。本文将介绍微信小程序中PHP开发的各种状态码和错误处理方法。一、微信小程序中的状态码在微信小程序中,HTTP状态码(HTTPStatu

随着微信小程序的普及,各类开发需求也日渐增多。其中,文本框自动完成功能是小程序中常用的功能之一。虽然微信小程序提供了一些原生的组件,但是有一些特殊需求还是需要进行二次开发。本文将介绍如何使用PHP语言实现微信小程序中文本框自动完成功能。准备工作在开始开发之前,需要准备一些基本的环境和工具。首先,需要安装好PHP环境。其次,需要在微信小程序后台获取到自己的Ap

近年来,移动互联网的快速发展和移动终端的普及,让微信应用程序成为了人们生活中不可或缺的一部分。而在微信应用程序中,小程序更是以其轻量、快速、便捷的特点受到了广泛的欢迎。但是,对于小程序中的数据更新问题,却成为了一个比较头疼的问题。为了解决这一问题,我们可以使用PHP开发的自动更新方法来实现自动化数据更新。本篇文章就来探讨一下微信小程序中PHP开发的自动更新方

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

禪工作室 13.0.1
強大的PHP整合開發環境

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境