很多人都誤解伺服器
隨便一台電腦或是Android手機,甚至是樹莓派,只要裝個軟體就可以是伺服器
nodejs就是個很好的例子,他可以讓開發者用JavaScript來開發後台,背後運行的核心就是Google chrome的V8解析引擎
總之伺服器是個很廣義彈性很大的東西,不要因為學校教php + MySQL,就把覺得唯有這樣才是伺服器,很多初學的人因為觀念被限制在『伺服器 = php + MySQL』,導致很多事情簡單的事情卻搞得很複雜
舉個例子:
我想要人在外面可以用手機控制家裡的冷機器
買一個可以發出紅外線訊號的USB設備後插在電腦,然後用php接受來自手機的訊號,當手機開啟網址送請求過來時,就用紅外線控制冷氣
到這邊都沒問題
但這時候不少人就會找『php控制紅外線』的相關資料,基本上很難找到這樣的東西
一般硬體廠商提供的都是C#、java、C++、arduino的控制函式庫
用紅外線裝置廠商提供的API做一個dll或exe,當php接收到請求後,php去啟動這個dll或exe
php只是個我用來處理訊號溝通的橋樑,php辦不到的事情就叫其他人做
只要有這樣的概念,就能輕易達成這個看起來很複雜的任務
更進階一點直接用現有的服務來搭配,用直播軟體讓觀眾控制遊戲裡面的角色
隨便用C#或C++什麼的程式語言取得觀眾的留言
當觀眾留言特定指令時,就用C#或C++模擬鍵盤送出按鍵,藉此控制遊戲裡面的角色動作
以為伺服器是一台很大,很複雜難澀的機器
或要有php、MySQL這種後台才叫伺服器
這樣的概念是錯誤的
隨便一台電腦或是Android手機,甚至是樹莓派,只要裝個軟體就可以是伺服器
可以接受訪問請求並且回傳資料就叫做伺服器
就算要用C++處理訪問請求也沒關係
就算整個伺服器都沒有html檔也能變成網站
像是jsp就是利用java環境部署而成的伺服器,伺服器裡面的html語法都會被編譯成class檔,已經編譯過了所以運行效率極高
PHP其實背後是C++,阿帕契伺服器接收到請求後,立即解析php檔,然後根據php語法執行對應的C++函數,像是我在php裡面寫了撈資料庫的語法,c++就會去撈資料庫,然後跟php檔裡面的html語法合併整合成要回傳給使用者看的html字串,這也就是php語法會奇葩的原因,與其說是程式語言,不如說看起來更像是腳本
所以我可以用任何喜歡的程式語言來做php在做的事情
可以自創一種檔案叫做AA檔的檔案,他其實是html,不過如果裡面有{{{dbName -> select * from tabName}}}的字串,就會把這個字串取代成從資料庫撈取的資料
當有請求來訪候,就讀取對應的AA檔,並且解析看裡面有沒有我上述提到的需要取代成資料庫資料的特殊語法,有先去撈資料庫,然後加工處理在回傳html字串給使用者; 沒有就直接回傳AA檔,因為他本來就是html
可以自創一種檔案叫做AA檔的檔案,他其實是html,不過如果裡面有{{{dbName -> select * from tabName}}}的字串,就會把這個字串取代成從資料庫撈取的資料
當有請求來訪候,就讀取對應的AA檔,並且解析看裡面有沒有我上述提到的需要取代成資料庫資料的特殊語法,有先去撈資料庫,然後加工處理在回傳html字串給使用者; 沒有就直接回傳AA檔,因為他本來就是html
nodejs就是個很好的例子,他可以讓開發者用JavaScript來開發後台,背後運行的核心就是Google chrome的V8解析引擎
總之伺服器是個很廣義彈性很大的東西,不要因為學校教php + MySQL,就把覺得唯有這樣才是伺服器,很多初學的人因為觀念被限制在『伺服器 = php + MySQL』,導致很多事情簡單的事情卻搞得很複雜
舉個例子:
我想要人在外面可以用手機控制家裡的冷機器
買一個可以發出紅外線訊號的USB設備後插在電腦,然後用php接受來自手機的訊號,當手機開啟網址送請求過來時,就用紅外線控制冷氣
到這邊都沒問題
但這時候不少人就會找『php控制紅外線』的相關資料,基本上很難找到這樣的東西
一般硬體廠商提供的都是C#、java、C++、arduino的控制函式庫
用紅外線裝置廠商提供的API做一個dll或exe,當php接收到請求後,php去啟動這個dll或exe
php只是個我用來處理訊號溝通的橋樑,php辦不到的事情就叫其他人做
只要有這樣的概念,就能輕易達成這個看起來很複雜的任務
更進階一點直接用現有的服務來搭配,用直播軟體讓觀眾控制遊戲裡面的角色
隨便用C#或C++什麼的程式語言取得觀眾的留言
當觀眾留言特定指令時,就用C#或C++模擬鍵盤送出按鍵,藉此控制遊戲裡面的角色動作