本文目錄一覽:
- 1、php require_once過多是否會導致php性能太差,求各位大大幫助
- 2、php 寫入文件 消耗伺服器資源大嗎~
- 3、現在開發網站,好像都是流行用php,那java web一般用在哪裡呢?它們之間的區別和優劣勢在哪裡呢?
- 4、PHP是什麽(我想要詳細一點的答案)
- 5、為什麼那麼多公司不用 .NET,而選擇PHP、JSP,是 .NET有什麼缺點嗎?
- 6、php頁面內存消耗 多大
php require_once過多是否會導致php性能太差,求各位大大幫助
require_once指的是php內部的變數和函數只會用一次;
require_once需要比較php文件是否被包含過了,使用過多_once肯定會降低效率。
建議把所有公用的函數放到一起,直接用require()函數
php 寫入文件 消耗伺服器資源大嗎~
這個提問有點太籠統了,只是普通的寫入文件,消耗的資源不是很大,但是如果寫入頻率很高,數據量很多就另當別論了,我現在是用php做的移動聯通的通道程序,以命令行的形式運行在linux伺服器上,每天下發的數量級大概是50萬條左右,每發送一條就要寫入3-5行左右的日誌文件,日誌是按照天來生成的,如果數量級更大的話可以按照時段來生成,以現在情況來看對系統影響不大。
現在開發網站,好像都是流行用php,那java web一般用在哪裡呢?它們之間的區別和優劣勢在哪裡呢?
現在市場上的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用開發出的產品門檻更高。
不怕不識貨,就怕貨比貨。Php開發出來的產品也能用,但是和java開出的同類產品是沒法比較的。正因為php開發的產品整體性能和java開發的相去甚遠,所以php運用低成本的低價優勢和同類的java產品抗爭,以價格落差來平衡購買者的心態。所以,PHP + MYSQL 的OA不值錢也就不足為怪了
第二種
比較PHP和JSP這兩個web開發技術,在目前的情況是其實是比較PHP和Java的Web開發。以下是我就幾個主要方面進行的比較:
一、 語言比較
Php是解釋執行的伺服器腳本語言,首先php有簡單容易上手的特點。語法和c語言比較象,所以學過c語言的程序員可以很快的熟悉php的開發。而java需要先學好java的語法和熟悉一些核心的類庫,懂得面向對象的程序設計方法。所以java不如php好學。
Java首先要編譯成位元組碼.class文件,然後在java虛擬機上解釋執行。Java的web開發首先最容易想到的就是JSP(現在已經到JSP2.0),原來的java的web開發都是用servlet來實現的,用servlet來開發需要程序員在java的源文件中嵌入大量的html代碼。所以後來就出現了JSP,JSP可以方便的嵌入到html文件當中,其實jsp文件在伺服器上執行的時候首先會被應用伺服器轉換成servlet,然後再編譯執行。Jsp可以通過servlet和JavaBean的支持產生強大的功能。JavaBean 是一種可復用的、跨平台的軟體組件。使用javabean可以方便的實現java代碼和html的分離,能夠增強系統的功能和軟體的復用性。
Java的web開發屬於SUN公司定義的J2EE其中的規範。而且在J2EE中包括了java的web開發的所有方面,如:JSP、Servlet、JDBC、JNDI、JAVABEAN、EJB等等。J2EE就特別適合於做大型的企業級的應用。
二、 資料庫訪問比較
Java通過JDBC來訪問資料庫,通過不同的資料庫廠商提供的資料庫驅動方便地訪問資料庫。訪問資料庫的介面比較統一。
PHP對於不同的資料庫採用不同的資料庫訪問介面,所以資料庫訪問代碼的通用性不強。例如:用Java開發的web應用從MySQL資料庫轉到Oracle資料庫只需要做很少的修改。而PHP則需要做大量的修改工作。
三、 系統設計架構比較
採用Java的web開發技術,需要使用的是面向對象的系統設計方法,而PHP還是採用面向過程的開發方法。所以用Java進行開發前期需要做大量的系統分析和設計的工作。
四、 跨平台性
Java和PHP都有很好的跨平台的特性。幾乎都可以在不作任何修改的情況下運行在Linux或者Windows等不同的操作系統上。
五、 開發成本比較
PHP最經典的組合就是:PHP + MySQL + Apache。非常適合開發中小型的web應用,開發的速度比較快。而且所有的軟體都是開源免費的,可以減少投入。
Java的web應用伺服器有免費Tomcat、JBoss等,如果需要更好的商業化的服務有:Web Sphere和 Web logic。
六、 分散式多層架構比較
PHP只能實現簡單的分散式兩層或三層的架構,而JAVA在這方面就比較強大,可以實現多層的網路架構。資料庫層(持久化層)、應用(業務)邏輯層、表示邏輯層彼此分開,而且現在不同的層都已經有一些成熟的開發框架的支持。例如Struts就是利用java的web開發技術實現了MVC的設計模式,而在業務邏輯層也有Spring框架,資料庫持久化層有Hibernate等框架。這些框架可以方便開發者高效、合理、科學得架構多層的商業應用。
下面簡要的說一下Struts,它實質上是在JSP Model2的基礎上實現的一個MVC(Model、View、Controler)框架。JSP Model2體系結構是一種聯合使用JSP 與Servlet 來提供動態內容的方法。在Struts框架中,模型由實現業務邏輯的JavaBean或EJB組件構成,控制器由Servlet實現的,視圖由一組JSP文件組成。採用Struts可以明確角色的定義和開發者與網頁設計者的分工。而且項目越複雜,其優勢越明顯。
七、 源代碼安全
PHP開發的程序的源代碼都是公開的,他人拿到php開發的程序後都可以進行修改。
Java開發的程序,最後用戶拿到的是只是一些編譯好的class類,無法看到完整的源代碼,安全性高。
八、性能比較
有人做過試驗,對這兩種種語言分別做迴圈性能測試及存取Oracle資料庫測試。
在循環性能測試中,JSP只用了令人吃驚的四秒鐘就結束了20000*20000的迴圈。而PHP測試的是2000*2000循環(少一個數量級),卻分別用了63秒。
資料庫測試中,二者分別對 Oracle 8 進行 1000 次 Insert,Update,Select和Delete: JSP 需要 13 秒,PHP 需要 69 秒。
表格 1 PHP 與Java的比較
PHP JAVA
可復用性 低 高
開發速度 快 慢
易維護性 差 優
可移植性 優-Linux、Windows、Unix等
安全性 低 高
開發費用 低 高
多層架構 差 優
資料庫訪問 介面不統一 介面統一
可擴展性 差 優
面向對象 差 優
綜上 PHP適合於快速開發,中小型應用系統,開發成本低,能夠對變動的需求作出快速的反應。而Java適合於開發大型的應用系統,應用的前景比較廣闊,系統易維護、可復用性較好。還有,同樣功能的系統用Java開發的系統要比PHP開發的系統的價格要高
PHP是什麽(我想要詳細一點的答案)
PHP,一個嵌套的縮寫名稱,是英文超級文本預處理語言(PHP:Hypertext Preprocessor)的縮寫。PHP 是一種 HTML 內嵌式的語言,PHP與微軟的ASP頗有幾分相似,都是一種在伺服器端執行的嵌入HTML文檔的腳本語言,語言的風格有類似於C語言,現在被很多的網站編程人員廣泛的運用。PHP 獨特的語法混合了 C、Java、Perl 以及 PHP 自創新的語法。它可以比 CGI 或者 Perl 更快速的執行動態網頁。用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多;與同樣是嵌入HTML文檔的腳本語言JavaScript相比,PHP在伺服器端執行,充分利用了伺服器的性能;PHP執行引擎還會將用戶經常訪問的PHP程序駐留在內存中,其他用戶再一次訪問這個程序時就不需要重新編譯程序了,只要直接執行內存中的代碼就可以了,這也是PHP高效率的體現之一。PHP具有非常強大的功能,所有的CGI或者JavaScript的功能PHP都能實現,而且支持幾乎所有流行的資料庫以及操作系統。
PHP 最初是1994年Rasmus Lerdorf創建的,剛剛開始只是一個簡單的用Perl語言編寫的程序,用來統計他自己網站的訪問者。後來又用C語言重新編寫,包括可以訪問資料庫。在1995年以Personal Home Page Tools (PHP Tools) 開始對外發表第一個版本,Lerdorf寫了一些介紹此程序的文檔,並且發布了PHP1.0。在這早期的版本中,提供了訪客留言本、訪客計數器等簡單的功能。以後越來越多的網站使用了PHP,並且強烈要且增加一些特性,比如循環語句和數組變數等等,在新的成員加入開發行列之後,在1995年中,PHP2.0發布了。第二版定名為PHP/FI(Form Interpreter)。PHP/FI加入了對mSQL的支持,從此建立了PHP在動態網頁開發上的地位。到了1996年底,有15000個網站使用 PHP/FI;時間到了1997年中,使用PHP/FI的網站數字超過五萬個。而在1997年中,開始了第三版的開發計劃,開發小組加入了 Zeev Suraski 及 Andi Gutmans,而第三版就定名為PHP3。2000年,PHP4.0又問世了,其中增加了許多新的 性。
PHP的特性包括:
開放的源代碼:所有的PHP源代碼事實上都可以得到。
PHP是免費的。
基於伺服器端:由於PHP是運行在伺服器端的腳本,可以運行在UNIX、LINUX、WINDOWS下。
嵌入HTML:因為PHP可以嵌入HTML語言,所以學習起來並不困難。
簡單的語言:PHP堅持腳本語言為主,與Java以C++不同。
效率高:PHP消耗相當少的系統資源。
圖像處理:用PHP動態創建圖像
PHP 3與PHP 4的比較
PHP3跟Apache伺服器緊密結合的特性;加上它不斷的更新及加入新的功能;而且幾乎支持所有主流與非主流資料庫;再以它能高速的執行效率,使得PHP在1999年中的使用站點已經超過了150000萬。加上它的源代碼完全公開,在 Open Source意識抬頭的今天,它更是這方面的中流砥柱。不斷地有新的函數庫加入,以及不停地更新的活力,使得PHP無論在UNIX、LINUX或是Windows的平台上都可以有更多新的功能。它提供豐富的函數,使得在程序設計方面有著更好的支持。
PHP4.0整個腳本程序的核心大幅更動,讓程序的執行速度,滿足更快的要求。在最佳化之後的效率,已較傳統CGI或者ASP等程序有更好的表現。而且還有更強的新功能、更豐富的函數庫。無論您接不接受,PHP 都將在 Web CGI 的領域上,掀起巔覆性的革命。對於一位專業的Web Master 而言,它將也是必修課程之一。
PHP 4.0是更有效的,更可靠的動態Web頁開發工具,在大多數情況運行比 PHP 3.0要快,其腳本描述更強大並且更複雜, 最顯著的特徵是速率比的增加。PHP4.0這些優異的性能是PHP 腳本引擎重新設計產生的結果:引擎由 AndiGutmans 和 Zeev Suraski從底層全面重寫。PHP4.0 腳本引擎 ——Zend 引擎,使用了一種更有效的編譯——執行方式, 而不是PHP 3.0 採用的執行 ——當解析時模型。
PHP4在3.0版的基礎上增加或增強了許多有用的特徵,主要如下:
(1)別名:在PHP4中,可以利用引用為變數賦值,這給編程帶來了很大的靈活性。
(2)擴充了API 模塊:PHP 4.0 為擴展的 API 模塊的提供了擴展PHP介面模塊, 它比舊的 API 版本顯著地快。 PHP 模塊已有的及最常用的介面多數被轉換到使用這個擴展的介面。
(3)自動資源釋放:PHP4增加了引用計數功能,這種新技術的引入使PHP4具有了自動內存管理功能,減輕了開發人員的負擔。
(4)布爾類型:PHP 4.0 支持布爾類型。
(5)進程生成:在 UNIX 環境下的 PHP 4.0 提供了一個很智能和通用的生成進程, 使用了一種名為基於automake/libtool的系統生成技術。
(6)COM/DCOM 支持:PHP 4.0 提供 COM/DCOM 支持 ( 僅用於Windows 環境 ) 可以無縫地存取和訪問 COM 對象。
(7)與PHP 3.0 兼容性很好:PHP 4.0 是與 PHP 3.0 代碼向後兼容性接近100% 。由於 PHP 4 的改進的體系結構,兩者有一些細微的差別,但是大多數人將可能永遠不可能遇上這種情況。
PHP介紹
(8)配置:PHP4重新設計和增強了PHP。ini文件,這使得用PHP。ini來配置PHP顯得極為容易,這個文件可以在運行時被Apache(unix系統)或由Windows 註冊(Windows 環境)。
(9)加密支持:PHP4實現了完整的加密, 這些加密功能是一個完整的mycrypt庫,並且 PHP 4.0 支持哈希函數。Blowfish,TripleDES,MD5,並且SHA1 也是可使用的一些加密演算法。
(10)類型檢查:PHP 4.0 支持同一操作符用於評類型檢查:===( 3 等號運算符 ), 為在兩個值和其類型之間作檢查。例如, 3 ===3 將視為假 ( 類型是不同的 ), 而 3 ==3 ( 相等判斷 ) 將視為真。
(11)FTP 支持:PHP 4.0 支持 FTP 。通常, 你會為通過一個數據機連接下載一個大文件提供一個介面。然而, 如果你確實有需要,可以使用PHP 。
(12)PHP4新增函數或功能增強函數:PHP 4.0 新增了許多函數,同時也將許多現有的函數功能進行了增強,以下是一些例子。 array_count_values() eval() foreach() nclude() ob_end_clean() ob_end_flush() ob_get_contents() ob_start() strip_tags() unset()
(13)here列印:PHP 4.0 的Here列印是與Perl類似的, 儘管完全不相同。Here是列印大容量文章的一個有用的方法,例如在 HTML文件中,不會漏掉任何一個字元,例如目錄標記。
(14)HTTP Session fallback 系統:為 HTTP Session管理的一個 fallback 系統在 PHP 4.0被實現 。預設情況下,Session標識符由cookies存儲。如果沒有cookies支持或一項cookies任務失敗,Session標識符自動被創建並在 URL 的查詢字元串中被攜帶。
(15)ISAPI 支持:PHP 4.0 能作為一個個性化的 ISAPI 模塊作為 IIS插件 。這比 PHP 3.0 更有效, 它作為一個外部的程序來運行。
(16)內存:PHP 4.0 能更有效的使用內存, 導致較少的內存佔用消耗,這主要歸功於引用計數技術的實現。
(17)其他類成員函數:在 PHP 4.0 你能在成員函數本身的作用域或全局範圍內調用其他類的成員函數。例如,你能用一個子函數覆蓋父函數,並在子函數中調用父函數。
(18)多維數組:在 PHP 4.0 ,利用GET,POST,Cookies的進行的數據傳輸支持多維數組。
(19)個性化的 HTTP Session支持:HTTP Session處理, 包括 fallback 系統管理,在 PHP 4.0被它的新庫函數實現 。在版本 3.0 中處理Session要求使用 PHPLIB 和第三方的庫函數, 它比把Session直接地由 PHP 支持慢了許多。
(20)個性化的 Java 支持:PHP 4.0 支持和java的交互。這種個性化的Java 支持為PHP 在 Java 對象上創建和使用方法提供一個簡單並且有效的工具。
21)對象和數嵌套組:PHP 4.0 實現了功能更加強大的對象, 移去了 PHP 3.0存在的種種句法限制。對象能在數組以內被嵌套並且反過來也如此, 可以根據你的需要實現嵌套。
(22)面向對象的編程:PHP 4.0 為面向對象的編程和構造類及對象提供擴展的功能和新特徵。PHP4實現了對象重載,引用技術等新技術。
(23)對象重載支持:對象重載語法允許第三方的基於面向對象的類庫使用 PHP4 的面向對象的特徵存取他們自身的功能。使用這個特徵的一個 COM 模塊已經被實現了。
(24)輸出緩衝支持:PHP 提供了一個輸出緩衝函數集合。輸出緩衝支持允許你寫包裹函數功能壓縮緩衝區。在 PHP4 的輸出緩衝支持允許 HTML 頭信息存放, 無論 HTML的正文是否輸出。頭信息( (header(), content type, and cookies ) 不採用緩衝 。
(25)增加了PCRE 庫:PHP 4.0 包括一個 Perl 兼容的正則表達式 (PCRE ) 庫, 和正常regex庫一起與 PHP 綁定。split 和replace PCRE 功能被支持。PCRE 和 Perl 正規表達式之間有一些細微差別。
(26)PHP.ini 文件:PHP.ini文件在 PHP4.0 被重新設計, 使用的 PHP 的配置PHP.ini是更容易並且更有效的。全部文件能被Apache 在運行時間操作 ( 在 Apache環境 下 ) 或由 Windows 註冊表 ( 在 Windows 下面 ) 。被加入PHP.ini文件的配置指令自動地在所有相關的模塊中被支持。
(27)引用計數:PHP 4.0 為系統中的每個數值提供了引用計數, 包括資源。一旦一個資源不再被任何變數引用,它自動地被釋放以節省內存資源。利用這個特徵的最明顯的例子一個內置SQL查詢的循環語句。在PHP 3.0中 ,每次遞歸另外的 SQL 結果集合重複申請內存,直到腳本執行完畢,這些結果集合佔用的內存才被釋放。
(28)支持引用:通過引用可以改變一個變數的值。
(29)函數的運行時綁定:PHP 4.0 的運行時間綁定功能允許你在他們被聲明以前調用, 無論聲明是否在代碼以後或是在運行時間。
(30)類的運行時信息:PHP 4.0 支持在運行時刻存取下列類信息:一個對象的類名,一個對象的父類的類名字,以及對象函數所在的名字。
(31)伺服器抽象層:為支持Web伺服器提供了增強型 SAPI ( 伺服器 API ) 介面,是 PHP 4。0 不可分的一部分。這個伺服器抽象層,提供了通用的WEB伺服器介面支持,支持多線程WEB伺服器,為大多數的WEB伺服器提供透明的支持, 這些伺服器包括 Apache ,IIS ( ISAPI ), 以及 AOL 伺服器。
(32)語法的點亮顯示:PHP 4.0 語法的點亮顯示允許開發者看見源代碼而不是腳本, 這個功能比PHP 3。0中的更有效。它跑得更快,更執行得更好,並且產生更緊湊的HTML代碼。
(33)由引用改變變數的值:PHP 4.0 由引用支持可變的賦值, 「關聯」的2個變數之中個的任何一個的值被改變,另外的變數的值同樣被改變,這類似與C中的指針類型。
(34)在引用字元串中的變數引用:PHP 4.0 增強了在引用字元串中的變數引用。
PHP 在資料庫方面的豐富支持,也是它迅速走紅的原因之一,它支持下列的資料庫或是數據文件:
· Adabas D
· DBA
· dBase
· dbm
· filePro
· Informix
· InterBase
· mSQL
· Microsoft SQL Server
· MySQL
· Solid
· Sybase
· ODBC
· Oracle 8
· Oracle
· PostgreSQL
而在 Internet 上它也支持了相當多的通訊協議 (protocol),包括了與電子郵件相關的 IMAP, POP3;網管系統 SNMP;網路新聞 NNTP;帳號共用 NIS;全球信息網 HTTP 及 Apache 伺服器;目錄協議 LDAP 以及其它網路的相關函數。
除此之外,用 PHP 寫出來的 Web 後端 CGI 程序,可以很輕易的移植到不同的操作系統上。例如,先以 Linux 架的網站,在系統負荷過高時,可以快速地將整個系統移到 SUN 工作站上,不用重新編譯 CGI 程序。面對快速發展的 Internet,這是長期規劃的最好選擇。
變數類型:
PHP有好多種變數; 主要有這些:
– 數字 (integer – 例: 32)
– 布林值 (boolean – 例: TRUE)
– 字串 (string – 例: ‘a string of text’)
– NULL
– 資源(resource)
– 陣列 (array – 例: arrayname[2])
語法:
語法有三種:
//comment
/* comment */
# comment
基本的 “Control Structures”:
* if … else
if (condition == true) ;
* if … else then
if (condition == true)
else if (condition2 == true) ;
一個PHP實例:
html
head
titleFirst program/title
/head
body
?php
echo “hello world”;
?
/body
/html
請看:
php對面向對象的支持
面向對象編程的概念:
不同的作者之間說法可能不一樣,但是一個OOP語言必須有以下幾方面:
抽象數據類型和信息封裝
繼承
多態
在PHP中是通過類來完成封裝的:
?php
class Something {
// 在OOP類中,通常第一個字元為大寫
var $x;
function setX($v) {
// 方法開始為小寫單詞,然後使用大寫字母來分隔單詞,例如getValueOfArea()
$this-x=$v;
}
function getX() {
return $this-x;
}
}
當然你可以按自己的喜好進行定義,但最好保持一種標準,這樣會更有效。數據成員在類中使用”var”聲明來定義,在給數據成員賦值之前,它們是沒有類型的。一個數據成員可以是一個整數,一個數組,一個相關數組(associative array)或者是一個對象。方法在類中被定義成函數形式,在方法中訪問類成員變數時,你應該使用$this-name,否則對一個方法來說,它只能是局部變數。
使用new操作符來創建一個對象:
$obj=new Something;
然後你可以使用成員函數通過:
$obj-setX(5);
$see=$obj-getX();
在這個例子中,setX成員函數將5賦值給對象的成員變數x(不是類的),然後getX返回它的值5。可以象:$obj-x=6那樣通過類引用方式來存取數據成員,這不是一個很好的OOP習慣。我強烈建議通過方法來存取成員變數。如果你把成員變數看成是不可處理的,並且只通過對象句柄來使用方法,你將是一個好的OOP程序員。不幸的是,PHP不支持聲明私有成員變數,所以不良代碼在PHP中也是允許的。繼承在PHP中很容易實現,只要使用extend關鍵字。
?php
class Another extends Something {
var $y;
function setY($v) {
$this-y=$v;
}
function getY() {
return $this-y;
}
}
“Another”類的對象現在擁有了父類(Something)的全部的數據成員及方法,而且還加上了自己的數據成員和方法。
你可以使用
$obj2=new Something;
$obj2-setX(6);
$obj2-setY(7);
PHP現在還不支持多重繼承,所以你不能從兩個或兩個以上類派生出新的類來。你可以在派生類中重定義一個方法,如果我們在”Another”類中重定義了getX方法,我們就不能使 用”Something”中的getX方法了。如果你在派生類中聲明了一個與基派同名的數據成員,那麼當你處理它時, 它將「隱藏」基類的數據成員。
你可以在你的類中定義構造函數。構造函數是一個與類名同名的方法,當你創建一個類的對象時會被調用,例如:
?php
class Something {
var $x;
function Something($y) {
$this-x=$y;
}
function setX($v) {
$this-x=$v;
}
function getX() {
return $this-x;
}
}
所以你可以創建一個對象,通過:
$obj=new Something(6);
構造函數會自動地把6賦值給數據變數x。構造函數和方法都是普通的PHP函數,所以你可以使用預設參數。
function Something($x=”3″,$y=”5″)
接著:
$obj=new Something(); // x=3 and y=5
$obj=new Something(8); // x=8 and y=5
$obj=new Something(8,9); // x=8 and y=9
預設參數使用C++的方式,所以你不能忽略Y的值,而給X一個預設參數,參數是從左到右賦值的,如果傳入的參數少於要求的參數時,其作的將使用預設參數。
當一個派生類的對象被創建時,只有它的構造函數被調用,父類的構造函數沒被調用,如果你想調用基類的構造函數,你必須要在派生類的構造函數中顯示調用。可以這樣做是因為在派生類中所有父類的方法都是可用的。
?php
function Another() {
$this-y=5;
$this-Something();
//顯示調用基類構造函數
}
OOP的一個很好的機制是使用抽象類。抽象類是不能實例化,只能提供給派生類一個介面。設計者通常使用抽象類來強迫程序員從基類派生,這樣可以確保新的類包含一些期待的功能。在PHP中沒有標準的方法,但是:如果你需要這個特性,可以通過定義基類,並在它的構造函數後加上”die” 的調用,這樣就可以保證基類是不可實例化的,現在在每一個方法(介面)後面加上”die” 語句,所以,如果一個程序員在派生類中沒有覆蓋方法,將引發一個錯誤。而且因為PHP 是無類型的,你可能需要確認一個對象是來自於你的基類的派生類,那麼在基類中增加一個方法來實義類的身份(返回某種標識id),並且在你接收到一個對象參數時校驗這個值。當然,如果一個邪惡不好的程序員在派生類中覆蓋了這個方法,這種方法就不起作用了,不過一般問題多發現在懶惰的程序員身上,而不是邪惡的程序員。
當然,能夠讓基類對程序員無法看到是很好的,只要將介面列印出來做他們的工作就可以了。在PHP中沒有析構函數。
重載(與覆蓋不同)在PHP中不支持。在OOP中,你可以重載一個方法來實現兩個或重多的方法具有相同的名字,但是有不同數量或類型的參數(這要看語言)。PHP 是一種鬆散類型的語言,所以通過類型重載不起作用,然而通過參數的個數不同來重載也不起作用。
有時在OOP中重載構造函數非常好,這樣你可以通過不同的方法創建對象(傳遞不同數量的參數)。在PHP中實現它的技巧是:
?php
class Myclass {
function Myclass() {
$name=”Myclass”.func_num_args();
$this-$name();
//注意$this-name()一般是錯誤的,但是在這裡$name是一個將被調用方法的名字
}
function Myclass1($x) {
code;
}
function Myclass2($x,$y) {
code;
}
}
通過在類中的額外的處理,使用這個類對用戶是透明的:
$obj1=new Myclass(‘1’); //將調用Myclass1
$obj2=new Myclass(‘1′,’2’); //將調用Myclass2
有時這個非常好用。
多態
多態是對象的一種能力,它可以在運行時刻根據傳遞的對象參數,決定調用哪一個對象的方法。例如,如果你有一個figure的類,它定義了一個draw的方法。並且派生了circle和rectangle 類,在派生類中你覆蓋了draw方法,你可能還有一個函數,它希望使用一個參數x,並且可以調用$x-draw() 。如果你有多態性,調用哪個draw方法就依賴於你傳遞給這個函數的對象類型。
多態性在象PHP這樣的解釋語言(想像一下一個C++編譯器生成這樣的代碼,你應該調用哪一個方法?你也不知道你擁有的對象是什麼類型的,好,這不是重點)是非常容易和自然的。所以PHP當然支持多態性。
?php
function niceDrawing($x) {
//假設這是Board類的一個方法
$x-draw();
}
$obj=new Circle(3,187);
$obj2=new Rectangle(4,5);
$board-niceDrawing($obj);
//將調用Circle的draw方法
$board-niceDrawing($obj2);
//將調用Rectangle的draw方法
用PHP進行面向對象編程
一些”純化論者(purists)”可能會說PHP不是一個真正的面向對象的語言,這是事實。PHP 是一個混合型語言,你可以使用OOP,也可以使用傳統的過程化編程。然而,對於大型項目,你可能想/需要在PHP 中使用純的OOP去聲明類,而且在你的項目只用對象和類。
隨著項目越來越大,使用OOP可能會有幫助,OOP代碼很容易維護,容易理解和重用。這些就是軟體工程的基礎。在基於web的項目中應用這些概念就成為將來網站成功的關鍵。
PHP的高級OOP技術
在看過基本的OOP概念後,我就可以向你展示更高級的技術:
序列化(Serializing)
PHP不支持永久對象,在OOP中永久對象是可以在多個應用的引用中保持狀態和功能的對象,這意味著擁有將對象保存到一個文件或資料庫中的能力,而且可以在以後裝入對象。這就是所謂的序列化機制。PHP 擁有序列化方法,它可以通過對象進行調用,序列化方法可以返回對象的字元串表示。然而,序列化只保存了對象的成員數據而不包話方法。
在PHP4中,如果你將對象序列化到字元串$s中,然後釋放對象,接著反序列化對象到$obj,你可以繼續使用對象的方法!我不建議這樣去做,因為(a)文檔中沒有保證這種行為在以後的版本中仍然可以使用。(b) 這個可能導致一種誤解,在你把一個序列化後的版本保存到磁碟並退出腳本時。當以後運行這個腳本時,你不能期待著在反序列化一個對象時,對象的方法也會在那裡,因為字元串表示根本就不包括方法。
總而言之,PHP 進行序列化對於保存對象的成員變數非常有用。(你也可以將相關數組和數組序列化到一個文件中)。
例子 :
?php
$obj=new Classfoo();
$str=serialize($obj);
//保存$str到磁碟上
//幾個月以後
//從磁碟中裝入str
$obj2=unserialize($str)
你恢復了成員數據,但是不包括方法(根據文檔所說)。這導致了只能通過類似於使用$obj2-x來存取成員變數(你沒有別的方法!)的唯一辦法,所以不要在家裡試它。
有一些辦法可以解決這個問題,我把它留著,因為對這篇簡潔的文章來說,他們太不好。我會很高興地歡迎在PHP的後續版本中有全序列化的特性。
使用類進行數據存儲PHP和OOP一件非常好的事情就是,你可以很容易地定義一個類來操作某件事情,並且無論何時你想用的時候都可以調用相應的類。假設你有一個HTML表單,用戶可以通過選擇產品ID號來選擇一個產品。在資料庫中有產品的信息,你想把產品顯示出來,顯示它的價格等等。你擁有不同類型的產品,並且同一個動作可能對不同的產品具有不同的意思。例如,顯示一個聲音可能意味著播放它,但是對於其它種類的產品可能意味著顯示一個存在資料庫中的圖片。你可以使用OOP或PHP來減少編碼並提高質量:
定義一個產品的類,定義它應該有的方法(例如:顯示),然後定義對每一種類型的產品的類,從產品類派後出來(SoundItem類,ViewableItem類,等等),覆蓋在產品類中的方法,使它們按你的想法動作。
根據資料庫中每一種產品的類型(type)欄位給類命名,一個典型的產品表可能有(id, type, price, description, 等等欄位)…然後在處理腳本中,你可以從資料庫中取出type值,然後實例化一個名為type的對象:
?php
$obj=new $type();
$obj-action();
這是PHP的一個非常好的特性,你可以不用考慮對象的類型,調用$obj的顯示方法或其它的方法。使用這個技術,你不需要修改腳本去增加一個新類型的對象,只是增加一個處理它的類。
這個功能很強大,只要定義方法,而不去考慮所有對象的類型,在不同的類中按不同的方法實現它們,然後在主腳本中對任意對象使用它們,沒有if…else,也不需要兩個程序員,只有高興。
現在你同意編程是容易的,維護是便宜的,可重用是真的嗎?
如果你管理一組程序員,分配工作就是很簡單的了,每個人可能負責一個類型的對象和處理它的類。
可以通過這個技術實現國際化,根據用戶所選的語言欄位應用相應的類就可以了,等等。
拷貝和克隆
當你創建一個$obj的對象時,你可以通過$obj2=$obj來拷貝對象,新的對象是$obj的一個拷貝(不是一個引用),所以它具有$obj在當時的狀態。有時候,你不想這樣,你只是想生成一個象obj類一樣的一個新的對象,可以通過使用new語句來調用類的構造函數。在PHP中也可以通過序列化,和一個基類來實現,但所有的其它類都要從基類派生出來。
進入危險區域
當你序列化一個對象,你會得到某種格式的字元串,如果你感興趣,你可以調究它,其中,字元串中有類的名字(太好了!),你可以把它取出來,象:
?php
$herring=serialize($obj);
$vec=explode(‘:’,$herring);
$nam=str_replace(“\””,”,$vec[2]);
所以假設你創建了一個”Universe”的類,並且強制所有的類都必須從universe擴展,你可以在universe 中定義一個clone的方法,如下:
?php
class Universe {
function clone() {
$herring=serialize($this);
$vec=explode(‘:’,$herring);
$nam=str_replace(“\””,”,$vec[2]);
$ret=new $nam;
return $ret;
}
}
//然後
$obj=new Something();
//從Universe擴展
$other=$obj-clone();
你所得到的是一個新的Something類的對象,它同使用new方法,調用構造函數創建出的對象一樣。我不知道這個對你是否有用,但是Universe類可以知道派生類的名字是一個好的經驗。想像是唯一的限制。
php的最新版本是5.2.3(2007-07-01更新)
為什麼那麼多公司不用 .NET,而選擇PHP、JSP,是 .NET有什麼缺點嗎?
先以開發者的角度:
PHP跟.net根本就不是一個級別的,.net無論是應用場合、開發環境、幫助文檔、編寫風格、運行效率全部吊打PHP;PHP之所以流行就是因為很多開源框架都是現成的,剛好符合國人拿來主義的精神,修修改改就能拿來賣錢了。
JAVA各方面體量大致跟.net旗鼓相當,Windows系統下還是.net的天下,企業應用方面JAVA佔用率高些,移動開發方面因為安卓和蘋果的原因,.net失去了先機。微軟正在逐步趕超,unitiy、.net core都在表明微軟的態度。
以成本的角度:
微軟的產品哪都好,就是版權太貴,Windows系統要錢,office要錢,伺服器要錢,sqlserver要錢,再高級點用用企業版、集群之類的,做一個項目下來才能掙多少錢,都給微軟了。PHP之所以能存活,就是linux免費,MySQL免費,Apache免費,PHP免費,就連框架都免費;JAVA跟PHP差不多。這種生態下導致了代碼資源非常豐富,天下一般抄,開發成本就更低了。所以不是微軟的東西不好,是JAVA和PHP開發成本太低了。用過對比你會發現,貴有貴的道理,所有開發幫助文檔中,沒有比微軟做的更詳盡的。
如果你是一個獨立開發者,首選.net,Windows桌面應用、Windows服務、Windows 遊戲 、網站、webservice、unity 遊戲 ,除了安卓和蘋果原生應用,.net都能勝任。如果微軟可以在安卓下造出類似framework的東西,那就一統天下了。
做了7年的c#開發,4年多的java,c/c++,說說我的看法,主要有的區別:
一是開源和閉源的區別,.net早期完全閉源,開發也是完全傻瓜式的,微軟的思想就是讓開發更容易,所以無法看到底層實現,給人的感覺就是走一條衚衕,很快到達目的地卻無法知道牆內的東西,接觸過java和c之後,感覺就像掉進了大海,原來海底也這麼漂亮,有太多開源的軟體和框架,你可以看到更深層的東西,比如我們看dubbo,看進去後看netty,netty看進去後看到Linux,select,epoll,看到epoll,看Linux相關的,感覺就是掉進了大海,太多東西需要學習,做這麼多年開發依然在不斷的學習,但也給了我更多興趣和探知未知世界的樂趣,以前做.net的時候有種感覺就是,別讓我做非.net的東西,我不會,對陌生的的東西很害怕,現在的感覺就是你讓我寫個控制原子彈的程序我也敢去寫(比方)。
二是免費和收費的區別,所有的公司產品的成本是公司發展的最關鍵因素之一,.net全家桶成本太高,vs的版權+windows版權+sql server版權再加上其它支持類軟體版權,成本非常高,相反linux完全免費開源,給你選你會選哪一個?同時linux或從Unix而來,但天生具有輕量級性能可以發揮到極致而且穩定的系統,而windows為個人和辦公而設計,界面和系統其它資源就讓系統佔用一部分,感覺很笨重,上天做一個長連接測試,單台Linux輕鬆上幾十萬,當然由於內存原因,否則可以上百萬,而windows就很難做到,而且Linux哪裡不行你可以去改的,windows就不行了,所以一個穩定高效免費的還有一大堆開源支持的,和一個收費性能相比沒有那麼高效的,好多公司自然選擇前者
三是開發效率,上面說兩點都說.net處於下風,但.net不是一無是處,.net有自身的優點,那就是開發效率,.net在java之上做了改進,讓開發人員更容易開發,語言優美,做企業應用開發是很好的工具,可以快速出結果,你用其它開發要麼大炮打蚊子,要麼不穩定,在工廠和企業就要求很快做出來,這是.net優勢,所以有他的市場份額,說這麼多發現沒個圖,有評論的傳一張
為什麼PHP、Java在市面上比.NET要受歡迎?而且從各大招聘網站上看PHP、Java的崗位比.NET崗位要多很多。
其實.NET也是有不少的優點的:
但是,它的致命缺點是:
設想一下,一個企業,如果伺服器眾多,那系統費用、資料庫的授權費用,是多麼龐大的一筆支出!
而PHP、Java則不同,它們都是跨平台開源免費的,雖然Java開始收費了(但還有免費的OpenJDK),所以PHP、Java還是首選。
我自己當初學過.net,java,現在算是略有了解。 就我個人理解, 許多公司不用.net 語言的根本原因,就是 .net 在最初的時候不開源,教程少,入門較難,而且最後正式發行程序什麼,還要交錢,所以在許多公司中首選java這種開放語言,教程多,入門簡單,基本不收費(不收費是關鍵,劃重點) 。這也算是開源與閉源軟體之爭吧,最終以java為首的開源軟體獲勝,得以普及。
後來,開源軟體已經是大勢所趨,這時候微軟.net陣營已經做了許多改變。我最熟悉.net中的c#語言,我就以c#為例說說吧。
微軟以前信奉閉環,所有語言都不支持跨平台,也就沒有c#;後來java越來越發展壯大,.net感受到了巨大危險,於是就模仿java,.net提出了c#,藉以打擊java。c#很像java語言,而且和java一樣能夠跨平台,windows、linx、android、ios都可以編程,這就是微軟做的改變。
如果大家用過c#或者vb,c++來編寫窗口程序,就會發現,這些語言寫出來的windows窗口太棒了,而用java寫出來的窗口程序,不敢恭維,太丑了,這也就是我後來學習c#的原因。(這也就是為什麼說跨平台只是一個美夢而已)。
跨平台、開源之後的 .net ,其實跟java的基礎結構並不差多少,但不具備數量優勢,也就是說:java由於之前用的人太多了,各個方面的創新、發展都比較完善,有著堅實的用戶群體、應用基礎;而 .net ,由於是後發,已經失去了太多的應用環境,自然現在許多公司在不考慮是專為windows開發的情況下,是不會太主動使用.net。
如果用戶採用微軟全家桶解決方案, .Net 的開發效率和體驗是完全可以吊打 Java 和 PHP 的, 但昂貴的價格, 讓開發者和用戶又愛有恨.
其實 .Net + C# 現在雖說不如一票跨平台框架語言用得人多, 但也遠遠談不上沒落.
在這個問題上, 個人認為 Microsoft 的原 CEO Steve Ballmer 難辭其咎, 在 Windows 霸主地位已經開始崩潰的時候 依然固執堅持封閉生態, 導致當時的 .Net 開發者 無不焦慮和彷徨.
不過 2014 年 Satya Nadella 接任 CEO 後, 微軟 逐漸採取了 務實 開放 的做法, 收購 Xamarin 整合進 IDE, 推出 Visual Studio 社區版, C# 開始免費和跨平台, Microsoft 越來越像 Oracle, C# 越來越像 Java, 多多少少緩解了開發者的憂慮, 不少開發者開始回歸, 畢竟 C# 優雅的語法 和 Visual Studio 卓越的開發體驗 確實讓人難以割捨.
.Net以前是不開源的,需要收費,有著各種版權問題,導致其語言生態發展不夠。有其語言優點,但是從公司發展成本上來考慮,就註定不能作為首選。
PHP未興起之前,很多公司使用.net來開發網站,因為相比較java的JSP,開發效率也還是要高一些,這對中小型企業的業務快速變更升級很重要。JSP運行速度會快一些,但其需要編譯的特點,開發速度會相對緩慢。而對中小型企業來說,時間就是金錢,開發速度太慢,跟不上業務發展是很致命的。
之後PHP應運而生,其語言設計的初衷就是為了快速開發web應用。完全的開源免費,開發效率非常高,甚至一個人就可以搞定一個項目。中小型公司,從發展之初的考慮,逐漸將PHP作為首選發展語言。
隨著PHP生態的逐漸強大,.net這種生態落後,開發速度比不上PHP,運行速度比不上JSP的語言也就逐漸沒落了。
現在也有很多發展好了的公司,做大了做強了,又開始將自己的PHP項目往JSP遷移,因為開始追求運行速度。
所以PHP基本佔領了中小型公司,而大公司則更多選擇JSP。這都是語言的特性和優勢決定的,將來如果出現一種語言能同時兼有開發速度和運行速度的免費開源的語言,那PHP和JSP也會逐漸走上.net這條路。一切都是企業成本和效率的問題。
+++++++++++++++++++++++++++++++++++++
第一次寫問答,沒想到有這麼高的閱讀量。
有些人說我對.net的認識太落後了,好吧,我開始學編程的時候,.net確實是比較封閉的狀態,這些年我也不再去關注.net,對它的進一步了解也都是通過身邊的同學朋友側面反映的。
然後,真實情況是,我身邊所有學.net的同學都轉行了。因為崗位少,薪資低,真的生存很艱難哩。
遙想當年,我們一個宿舍的同學(一群窮逼,只能住在學校破舊的8人大宿舍里,因為住宿費真便宜啊 ),開始討論選某個語言作為今後學習方向。有人選擇了.net,有人選擇了PHP,有人選擇了JSP,然後各自努力。
現在,再來看彼此發展,.net的同學都轉行了,PHP的都在中小型公司,JSP的在平安保險這種大公司里。薪資待遇對比,.net的同學和我們也有了差距。如果只看基本工資的話,還是PHP的高,哈哈。但是,加上年終獎就撲街了。我們同在深圳的經常一起出來聚聚,中小型公司的經常自嘲,辛辛苦苦一整年,比不上**一個年終獎。唉,大公司年終獎是真多啊,可以頂你大半年甚至一年的工資,人比人氣死人。
當然,學PHP也不是都好,有個同學受不了壓力轉行做SEO了。也不是所有學java都好,我現在公司的測試就是個學java找不到工作,轉而當測試的。
其實問題還是經驗,有多年工作經驗,就是你找工作最好的敲門磚了。
最後,沒有最好的語言,適應市場發展的語言就是好語言。
各位看官,不喜勿噴!
簡單的說幾句,就幾句。我司用.net做web,推送伺服器,消息伺服器,數據握手服務,cad應用二次開發,gis應用,各種手持設備應用,各種服務窗口用的終端應用,視頻監控等等等,你還覺得php真的能打過.net么?
個人的觀點:
1、php肯定比不過.net了,用他主要是網站那塊而已。
2、net和Java,單純從語言c#比java優秀,開源生態肯定是Java,效率是c#
3、.net效率不高,在於windows平台,現在跨平台了,linux性能高於windows。
.Net core 有一定的機會。
這個答案有幾點:
1、運行環境成本問題,在.net core出來之前,.net
需要的運行環境搭設成本高,windows伺服器正版上萬,用access做資料庫也需要幾千元的正版office,雖說sql express是免費的,但是閹割的太厲害。所以一般win虛擬主機或者伺服器都基本上比linux的貴,尤其是海外注重版權地區,更是差至少一半,所以造成了php大行其道,因為他的運行環境幾乎零成本,而且伺服器需要的配置可以很低,甚至128m內存就可以跑php程序。
2、開發環境成本問題,一樣的毛病,code出來之前,開發.net程序的工具首選visual studio,但是正版的也要幾千上萬,不是一般人承受的起的。而php和java的免費又好用的開發工具又很多,因此php又獲得了先機。
3、學習成本問題,.net之前,微軟平台應用系列的開發需要太多,vb,c,c++,而網頁腳本語言是基於vbscript的asp,隨著系統的發展,這些需要和腳本逐步跟不上時代對敏捷開發、更複雜系統開發的需求,因此推出了asp.net和c#、f#,vb.net等語言,網頁方面使用asp.net開發又一直升級,.net 2.0,3.0,3.5,到現在的4.7.x,每次升級都帶來了新的概念,如今為了搶回份額,推出了.net core 也是升級了好幾個版本,所以.net的開發要不斷的學習,學習,升級,升級。而php就不一樣了,版本的升級基本上都是框架內的升級,學習成本明顯低於.net
4、資源豐富問題,如上所述,由於成本問題,很多人選擇了php開發,然後php的免費框架越來越多,程序員一般都懶,拿來修修改改就能上線,接著做下個項目就可以啦,而.net明顯沒那麼多免費框架,市面上分許多.net框架是要授權費的。
不過目前微軟的發力,也在著手改善這種問題,發布了visual studio code,visual studio community免費開發工具開發成本明顯降低,.net code跨平台語言只要版本符合要求linux系統也可以運行.net code開發的程序了。如果能夠有支持linux的文件型的資料庫軟體(例如office的access)發布就更好了。
做一個企業,最主要的目標是生存。活下來,才是根本目標,說好聽一點,就是可持續發展。微軟的生態圈大多收費,價格不菲,雖然從性能,入門,易用性來說,.Net都好於Java領域,好於JSP和PHP,無奈中國市場競爭激烈,企業研發成本是首選考慮的因素,尤其是在中美貿易戰的背景下,美國要加強知識產權保護的前提下,使用方用.Net產品和服務就要支付昂貴的版權費用,讓人承受不起。那麼,免費開源的非.Net體系,就會受到很多企業青睞,企業只要承擔人工成本,不用過多支付版權費,是企業不得不考慮的方面。所以,現在使用什麼技術,未來使用啥技術,是市場競爭的結果,要把握住這種趨勢,才能佔有先機。
php頁面內存消耗 多大
解決辦法:
1,修改 php.ini
將memory_limit由 8M 改成 16M(或更大),重啟apache服務
2,在PHP 文件中 加入 ini_set(」memory_limit」,」100M」);
注意:為了系統的其它資源的正常使用 請您不要將 memory_limit設置太大,其中-1為不限
3,修改.htaccess 文檔(前提是該目錄支持.htaccess)
在文檔中新增一句:php_value memory_limit 16M(或更大)
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/250853.html