1、php 系統架構
如果從語言層面來講抄,推薦您可以學習一下 《PHP設計模式》《深入PHP面向對象、模式與實踐》等書籍
如果您期望獨自帶領項目,能夠解決操作系統,資料庫,PHP等全方面的問題,建議從LAMP架構方面下一些功夫.比如《構建高性能Web站點》
2、php如何實現三層架構
我想我理解的三層也就是
描述層,用HTML等標記語言構建表單及網頁格式專,結構。
邏屬輯層,用伺服器端腳本解釋提交的表單數據,還有用戶的特殊需求,然後處理數據,按需將數據整合進標記語言,發給伺服器。
數據層,處理文本/資料庫的批量數據的儲取。
伺服器端腳本(例如php,asp,jsp)都是在web伺服器上進行邏輯處理。什麼傳輸都是伺服器的事情。她接受的是web伺服器傳給她的表單數據,返回給web伺服器的也是伺服器能夠接受的標記語言。其它無關。
3、關於PHP,分布式架構的代碼開發能力是指什麼?
指的是mysql伺服器和php伺服器等分別放置在不同的伺服器上,這樣可以大幅度提高網站的負載能力
4、如何成為一個PHP方向的架構師
作為一名十年PHP老司機來講下,剛開始1-2年都是都是CODER,知道項目版本如何控制,用回一些基本框架就答可以完成項目。
工作三年PHP不僅僅是只完成碼農工作,還需要深入學習PHP優化,Swoole介面,微服務,Mysql底層優化等,才能擁有一份25K左右的薪資,讓自己有一些市場競爭力度!
等你有一定經驗,4-5年這個階段後,想要進階CTO、架構師的話,高並發分流,分布式緩存、RPC、API架構設計等技術都必將掌握!
如果你想要往架構師或TL的方向發展的話,那或許你可以看一下我分享給你的這份進階路線圖,主要針對1到5年及以上的PHP開發人員,裡面的技術包涵了PHP高並發、分布式、微服務、框架內核、高性能等技術!!還准備了一套中高級進階學習教程,分享tp,laravel,Swoole,swoft微服務等教程,想要進階的PHPer請戳網頁鏈接
PHP架構師體系
5、用php開發 b2b 用什麼架構
一個php編寫的客戶端程序和一個用c編寫的伺服器程序通過socket進行通信的實例
在進行編程之前,我們需要打開socket,打開方法見下:
>gedit .bashrc
add things as follow
exportPATH=/usr/local/php5/bin:$PATH //我的php安裝在/usr/local/php5路徑下
>source .bashrc
然後:
1. >cd/root/php-5.2.13/ext/sockets //我的php安裝包放在/root下
2. >phpize
3. >./configure
4. >make
5. >make install
6. >cp /usr/local/lib/php.ini/usr/local/php5/lib/php.ini
7. >vi /usr/local/php5/lib/php.ini
add things as follow:
extension_dir ="/usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/"
extension = "sockets.so"
8.>apachectl restart
好了,在重啟apache後,我們就可以進行程序的編寫了,這兩個程序也是網上非常常見的程序,在次借用,也非常感謝程序的原創者。
1. 伺服器端程序:server.c
#include <sys/types.h>
#include <sys/socket.h>
#include <string.h>
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
main(){
int sock;
struct sockaddr_in server,client;
int recvd,snd;
int structlength;
char * server_ip = "128.168.10.1";
int port = 8888;
charrecvbuf[2000],sendbuf[2000];
char str1[]="I have received:\n";
memset((char *)&server,0,sizeof(server));
server.sin_family = AF_INET;
server.sin_addr.s_addr = inet_addr(server_ip);
server.sin_port = htons(port);
memset((char *)&client,0,sizeof(client));
client.sin_family = AF_INET;
client.sin_addr.s_addr = htonl(INADDR_ANY);
client.sin_port = htons(port);
if((sock = socket (AF_INET,SOCK_DGRAM,0)) < 0){
printf("socket create error!\n");
exit(1);
}
structlength = sizeof(server);
if( bind(sock,(struct sockaddr *)&server,structlength) < 0){
printf("socket bind error!\n");
perror("bind");
exit(1);
}
while(1){
structlength =sizeof(client);
printf("waiting.......\n");
recvd = recvfrom(sock,recvbuf,sizeof(recvbuf),0,
(struct sockaddr *) &client,&structlength);
if(recvd < 0){
perror("recvfrom");
exit(EXIT_FAILURE);
}
else{
printf("received:%s\n",recvbuf);
memset(sendbuf,0,strlen(sendbuf));
memcpy(sendbuf,str1,strlen(str1));
snd = sendto(sock,sendbuf,strlen(str1),0,
(struct sockaddr *) &client,structlength);
if(snd < 0){
perror("sendto");
exit(1);
}
printf("sendok!\n");
}
}
close(sock);
}
2.客戶端程序
<?php
$server_ip="128.168.10.1";
$port = 8888;
$sock=@socket_create(AF_INET,SOCK_DGRAM,0);
if(!$sock){
echo "socket create failure";
}
if($buf=="")
$buf="hello,how are you!\n";
if(!@socket_sendto($sock,$buf,strlen($buf),0,"128.168.10.1",8888)){
echo "send error\n";
socket_close($sock);
exit();
}
$buf="";
$msg="";
if(!@socket_recvfrom($sock,$msg,256,0,&$server_ip,&$port)){
echo "recvieve error!";
socket_close($sock);
exit();
}
echo trim($msg)."\n";
socket_close($sock);
?>
我們通過一個頁面來調用client.php程序,可以傳送自己想發送的消息
<form action="client.php"method="post">
<input type=text name=buf>
<input type=submitvalue="submit">
</form>
6、什麼是PHP架構..求高手解答
這位抄朋友你好:
其實嚴謹點襲來說,PHP只能算是一種基於服務端的網站語言腳本,談不上什麼架構;
架構其實也是一種叫法,主要是針對C/S 和B/S來說的.
正常只要語言開發編寫規范(尤其是網站類語言腳本),資料庫結構合理,就根本不用考慮什麼架構,架構上的設計最多也就是針對整個網站功能及資料庫結構上的設計.
7、php 架構和java架構的區別
PHP適合於快速開發,中小型應用系統,開發成本低,能夠對變動的需求作出快速的反應。而Java適合於開發大型的應用系統,應用的前景比較廣闊,系統易維護、可復用性較好。
通過對兩種語言寫的OA系統的比較,對這兩種語言的差異進行了一個全面的比較.
現在市場上的oa基本上可歸結為兩大陣營,即php陣營和java陣營。但對接觸oa不久的用戶來說,看到的往往只是它們的表相,只是明顯的價格差異,卻很難看出它們之間的實際差異。其實, PHP + MYSQL 不值錢不僅僅局限於oa軟體,而是整體上PHP + MYSQL開發的軟體都不如java開發的軟體值錢。為什麼PHP + MYSQL 的OA為什麼不值錢呢?首先得明白php和java之間的差異才行。
1、系統的技術架構比較
分層是將系統進行有效組織的方式,分而治之的思想是計算機領域中非常重要的思想。在好的分層思想引導下,便能實現「高內聚、低耦合」,也能將具體的問題割裂開來,易於控制、易於延展,更易於分配資源。PHP只能實現簡單的分布式兩層或三層的架構,而JAVA在這方面就十分強大,可以實現多層的網路架構。運用MVC的設計模式,可使oa系統具有更加高效、合理的系統架構。技術架構的落後,使運用php編寫的oa軟體系統先天不足,而後天又無法補足其先天上的劣勢。使得系統在可拓展性、需求應變性上與JAVA編寫的oa軟體系統的差距越來越大。架構的差距,註定了php做的oa充其量是個小家碧玉,始終無法和java這種大家閨秀同台競技。
2、資料庫訪問比較
PHP可編譯成具有與許多資料庫相連接的函數。將自己編寫外圍的函數去間接存取資料庫。通過這樣的途徑當更換使用的資料庫時,可以輕松地修改編碼以適應這樣的變化。但PHP提供的資料庫介面支持彼此不統一,比如對Oracle, MySQL,Sybase的介面,彼此都不一樣。由於PHP對於不同的資料庫採用不同的資料庫訪問介面,所以資料庫訪問代碼的通用性不強。
而Java通過JDBC來訪問資料庫,通過不同的資料庫廠商提供的資料庫驅動方便地訪問資料庫,訪問資料庫的介面比較統一。如果同樣是將開發的web應用從MYSQL數據數轉到ORACLE數據,PHP需要做大量的修改工作,而且比較繁瑣。但JAVA開發的便只需要很少的更改便能實現。
資料庫訪問方式的差異,奠定了php開發出的oa和java開發出來的oa是馬車和火車的差距,前者只能亦步亦趨而且額度有限,後者卻是工業化的結晶,不僅能夠包容萬物而且速度上穩步提升。
3、安全性對比
在同是開源和跨平台的java面前,php丟掉了很多的優勢。在代碼的安全性上尤為突出。php的開發程序在別人拿到代碼後,可以很容易的進行修改。而java開發的程序由於無法看到完整的源代碼,只能看到一些編譯好的類文件,所以安全性較高。加之系統架構的優勢,在安全性上php和java是相去甚遠。
如果非要將php和java在安全性上做個比較的話,同一個小偷光顧php那是隨便拿來隨便改,想拿什麼拿什麼,拿的高興還能大筆一輝某某到此一游。而光顧java的時候,便會發現警察把守,內設自動報警裝置,即便突破重重阻擾後進入居室。那值錢的東西都放在加密後的保險櫃中,只能望洋興嘆、鎩羽而歸。
4、前瞻性和拓展性
從整體來說,php適用於中小型系統,而java適用於大型系統。Php能夠將單一的事件做好,但卻不適合完成集成度較高的多項並發事件。為什麼說php適合中小型系統而不適合做大系統呢?
首先, php缺乏多層結構支持。而對於大型的系統負荷站點,只能採用分布計算。將資料庫、應用邏輯層和表示邏輯層彼此分開,並將同層的根據流量分開,組成二維數組。而php恰恰缺乏這種支持。
其次,PHP提供的資料庫介面不統一,要將多個不同的資料庫數據統一需要花費很大的力氣。而JAVA則沒有這種缺陷,可通過SUN Java的Java Class和EJB獲得規模支持,通過EJB/CORBA以及眾多廠商的Application Server獲得結構支持。如IBM的E-business,它的核心是採用JSP/Servlet的Web Sphere,是通過CGI來提供支持的。
如果將Php比作將才,具備獨擋一方的能力。那麼java便是帥才,具有較好的前瞻性和拓展性,整體布局和協同能力強。能夠指揮千軍萬馬,最後逐鹿中原。
5、開發成本比較
既然php在諸多方面都不如java優異,那麼php開發出的oa產品何以與java產品競爭呢?在於Php陣營普遍走的是低端路線,而java陣營走的是中高端路線。兩者之間交*的區域較小。
軟體價格的高低很大程度上和自身成本和功能相掛鉤。php的入門門檻較低,絕大多數學過c的程序員都很容易轉型為php程序員,這使得php程序員的泛濫成災的同時,低成本的php軟體產品也層出不窮。以PHP最經典的組合PHP + MySQL + Apache為例,由於所有軟體都是開源免費的,所以投入並不高。
而java開發需要特定的環境,成長為一個合格的java程序員需要一定的時間,java程序員的成本也是php成本的幾倍。Java的web應用伺服器免費的有Tomcat、JBoss等,而要想具有很好的商業化服務便必須選用Web Sphere和 Web logic。這其中投入的成本無形中便超是php成本的N倍。所以,java開發oa的成本要遠遠高於php開發出來的同類軟體產品。但也正由於java開發的成本較高,很難實現抄襲和短期內逾越的可能,也使得java用開發出的產品門檻更高。
8、什麼叫php架構?
設計php程序,系統,網站的思維,工作原理,運行原理稱之為架構。
9、php大型應用如何採用分布式架構?
大型分布式架構都是靠多種語言和工具共同分工合作實現的。
不是一兩種工具或者語言能實現的,如果專指php那是沒有意義的,因為php本身只是一個單進程的東東,更別說分布式。
大規模的web應用以及分布式架構主要在於伺服器的整體架構:
1、web服務集群;
2、資料庫集群;
3、分布式緩存;
php充其量只是實現其中一個節點的某個具體的web應用。
SD框架支持長連接協議TCP,WebSocket,短連接協議HTTP,以及UDP。
通過配置開放不同的埠開發者可以輕松管理不同的協議,並且可以共用一套業務代碼,當然你可以通過智能路由進行代碼的隔離。
長連接可以配置不同的數據傳輸協議,比如二進制協議文本協議等等,通過框架提供的封裝器解包器介面可以自定義各種各種的協議封裝,並且各種協議之間可以自動轉換,比如你通過廣播發送一個信息,該信息流向不同客戶端,客戶端間採用不同協議,那麼框架會根據不同的埠自動轉換不同的協議封裝。
也可以通過Http給所有長連接客戶端發送推送消息,類似這種混合協議協作的業務在SD框架上會異常簡單。
(9)php伺服器架構擴展資料:
普通的Web開發,常用的模式就是用戶登錄之後,登錄狀態信息保存在Session中,用戶一些常用的熱數據保存在文件緩存中,用戶上傳的附件信息保存在Web伺服器的某個目錄上。這種方式對於一般的Web應用,使用很方便,完全能夠勝任。但是對於高並發的企業級網站,就應付不了了。需要採用Web集群實現負載均衡。
使用Web集群方式部署之後,首要調整的就是用戶狀態信息與附件信息。用戶狀態不能再保存到Session中,緩存也不能用本地Web伺服器的文件緩存,以及附件,也不能保存在Web伺服器上了。因為要保證集群裡面的各個Web伺服器,狀態完全一致。
因此,需要將用戶狀態、緩存等保存到專用的緩存伺服器,比如Memcache。附件需要保存到雲存儲中,比如七牛雲存儲、阿里雲存儲、騰訊雲存儲等。
SD框架內大多數的對象都使用了對象池技術,對象池技術有利於系統內存的穩定,減少GC的次數,提高系統的運行效率,事實證明對象池對系統穩定做出了極大的貢獻。
開發者也可以使用這一套對象池技術,增加對對象的復用,減少GC和NEW的頻率,對系統毛刺現象和內存泄露方面都有很大的穩定性提升。
參考資料:網路-php
10、主流 開源PHP架構都有什麼?PHP論壇架構都有什麼?
LAMP(Linux + Apache + MySQL + PHP)
LAMP 平台由四個組件組成,呈分層結構。每一層都提供了整個軟體棧的一個要害部分:
* Linux:Linux 處在最低層,提供操作系統。其他每個組件實際上也在 Linux 上運行。但是,並不一定局限於 Linux,如有必要,其他組件也可以在 Microsoft® Windows®、Mac OS X 或 UNIX® 上運行。
* Apache:次低層是 Apache,它是一個 Web 伺服器。Apache 提供可讓用戶獲得 Web 頁面的機制。Apache 是一款穩定的、支持要害任務的伺服器,Internet 上超過 65% 的網站都使用它作為 Web 伺服器。PHP 組件實際上是在 Apache 中,動態頁面可以通過 Apache 和 PHP 創建。
* MySQL:MySQL 提供 LAMP 系統的數據存儲端。有了 MySQL,便可以獲得一個非常強大的、適合運行大型復雜站點的資料庫。在 Web 應用程序中,所有數據、產品、帳戶和其他類型的信息都存放在這個資料庫中,通過 SQL 語言可以很輕易地查詢這些信息。
* PHP:PHP 是一門簡單而有效的編程語言,它像是粘合劑,可以將 LAMP 系統所有其他的組件粘合在一起。您可以使用 PHP 編寫能訪問 MySQL 資料庫中的數據和 Linux 提供的一些特性的動態內容。
至於PHP論壇,用Discuz 或PHPWind 比較主流。