![]() 標(biāo)題: PHP終極提速 [打印本頁(yè)] 作者: HeTal 時(shí)間: 2006-3-30 10:09 AM 標(biāo)題: PHP終極提速 人們都說PHP是腳本語言,但是我們應(yīng)該感謝我們的Zend,他為我們做了很多可以擴(kuò)展的功能 用Zend API和PHP API的擴(kuò)展把我們的PHP的復(fù)雜操作封裝到PHP或者PHP的extensions里,這里的速度將會(huì)有質(zhì)的提高 網(wǎng)上一直在說JSP和PHP的10000*10000等的運(yùn)算,我試過把這個(gè)函數(shù)寫到一個(gè)so文件里,PHP來調(diào)用這個(gè)函數(shù),只用了幾百毫秒,我想這是JSP或者JAVA永遠(yuǎn)都不可能做到的 所以: 終極提速就是::: 把復(fù)雜的,耗時(shí)的操作封裝到PHP的extensions里,可以編譯到PHP里,也可以編譯成so或者dll文件,3Q 這里也特別建議加一個(gè)PHP的Zend API的討論區(qū),謝謝! 這是my_test.c中的test的函數(shù) CODE:
PHP_FUNCTION(test)
這是我在PHP里調(diào)用的代碼{ char *arg = NULL; int arg_len, len; char string[256]; /* if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arg_len) == FAILURE) { return; } */ //gettimeofday(&t,NULL); int i=0,j=0; for(i=0;i<10000;i++) for(j=0;j<10000;j++){} return SUCCESS; } CODE:
<?
程序執(zhí)行結(jié)果:if(!extension_loaded(‘my_test‘)) { dl(‘my_test.‘ . PHP_SHLIB_SUFFIX); } function getmicrotime(){ list($usec, $sec) = explode(" ",microtime()); return ((float)$usec + (float)$sec); } $time_start = getmicrotime(); /* for($i=0;$i<10000;$i++) for($j=0;$j<10000;$j++){} */ test(); $time_end = getmicrotime(); $time = $time_end - $time_start; echo "seconds:$time\n"; ?> CODE:
seconds:0.358623981476
[ 本帖最后由 HeTal 于 2006-3-30 10:16 AM 編輯 ]
作者: HeTal 時(shí)間: 2006-3-30 12:24 PM 自己頂一下 作者: xuefengal 時(shí)間: 2006-3-30 01:39 PM 寫應(yīng)用擴(kuò)展是很不錯(cuò),但針對(duì)你的題目及代碼確不怎么合適 [ 本帖最后由 xuefengal 于 2006-3-30 01:45 PM 編輯 ] 作者: xuefengal 時(shí)間: 2006-3-30 01:41 PM ,,,,,, [ 本帖最后由 xuefengal 于 2006-3-30 01:42 PM 編輯 ] 作者: darx 時(shí)間: 2006-3-30 04:10 PM 頂 好帖 作者: 奶瓶 時(shí)間: 2006-3-30 10:33 PM look 源文件的ext里有一個(gè)ext_skel 運(yùn)行它一下,看看有啥~~ 作者: HeTal 時(shí)間: 2006-3-30 11:04 PM 我這里只是舉一個(gè)例子,具體的,比如你在網(wǎng)站的搜索這種功能,PHP腳本本身很費(fèi)時(shí),這個(gè)時(shí)候你就可以把他寫成so的方式 還有就是寫商業(yè)模塊,這方面我覺得也很不錯(cuò) 謝謝,呵呵 作者: 奶瓶 時(shí)間: 2006-3-30 11:55 PM 搜索動(dòng)作本身不應(yīng)該P(yáng)HP完成,出于實(shí)際使用上的考慮 商業(yè)模塊也不應(yīng)該做so,出于道義上的考慮 分享,是一種美德 哈哈哈 作者: yueyang 時(shí)間: 2006-3-31 08:49 AM 不錯(cuò),現(xiàn)在做ASP的都搞組件來加密商業(yè)代碼了。 PHP加密也被破解了,看來只有如此了。 作者: HeTal 時(shí)間: 2006-3-31 10:14 AM QUOTE:
搜索動(dòng)作本身不應(yīng)該P(yáng)HP完成,出于實(shí)際使用上的考慮
搜索動(dòng)作是應(yīng)該由PHP發(fā)起,搜索過程才不是由PHP完成商業(yè)模塊也不應(yīng)該做so,出于道義上的考慮 分享,是一種美德 商業(yè)模塊也不應(yīng)該做so,出于道義上的考慮 看來微軟和很多賣錢的軟件公司都沒有道義了? 呵呵,我們只能說so等是一種方案,但不是全部,對(duì)吧? 作者: 奶瓶 時(shí)間: 2006-3-31 10:35 AM 發(fā)起動(dòng)作無非是接受form 分析 提交 再接收 再輸出 這種動(dòng)作對(duì)擴(kuò)展來說不會(huì)獲得多大好處 不是賣錢的公司無道義,我也賣錢,不過按照so這種方式來發(fā)布好像很奇怪 so的本質(zhì)是做功能性、協(xié)議擴(kuò)展,連接PHP和其它程序(比如數(shù)據(jù)庫(kù)系統(tǒng)) 對(duì)于性能上的擴(kuò)展,并不是特別的常用,畢竟沒有多少人會(huì)用PHP這種腳本算圓周率,擴(kuò)展性能比較多地集中在數(shù)組上,因?yàn)镻HP的數(shù)組是一種散列,二維數(shù)組的排序、遍歷等操作是非常慢的,但是又很常用,這一類的應(yīng)用才有價(jià)值 作者: HeTal 時(shí)間: 2006-3-31 11:48 AM QUOTE:
按照so這種方式來發(fā)布好像很奇怪
我用過很多商業(yè)的API,他們?cè)贚INUX下的發(fā)布都是有.a或者.so的方式來發(fā)布他們的API,用這種方式發(fā)布商業(yè)程序尤其是API沒有什么奇怪的,如移動(dòng)的短信CMPP2.0和CMPP3.0的C的API,而且是在LINUX下的教常用的,還有就是直接發(fā)布RPM或者BIN等,以這種方式發(fā)布程序(不是API)QUOTE:
因?yàn)镻HP的數(shù)組是一種散列,二維數(shù)組的排序、遍歷等操作是非常慢的
這里我建議看看PHP源碼目錄下的ext/standard/array.c,我想你不會(huì)對(duì)PHP的數(shù)組或者其他變量有偏見,PHP的變量是一個(gè)通用的C的結(jié)構(gòu)QUOTE:
對(duì)擴(kuò)展來說不會(huì)獲得多大好處
如果這樣說是肯定不對(duì)的,PHP的幾乎絕大部份函數(shù)和庫(kù)都是通過這種方法來寫的,包括array,socket,mysql,soap,curl等等,呵呵希望有更多有益的交流,謝謝! 作者: hzjjw 時(shí)間: 2006-3-31 12:22 PM 路過…… 有些收獲,不錯(cuò) 作者: 奶瓶 時(shí)間: 2006-3-31 01:22 PM 發(fā)布商業(yè)的so正常 發(fā)布商業(yè)的so有點(diǎn)那個(gè)了 PHP的數(shù)組絕對(duì)不是C的標(biāo)準(zhǔn)數(shù)組,當(dāng)然散列也是標(biāo)準(zhǔn)結(jié)構(gòu) 數(shù)組的嚴(yán)格定義是在編譯前確定空間,長(zhǎng)度,而且數(shù)組的下標(biāo)有嚴(yán)格意義。 手冊(cè)上的文字: PHP 中的數(shù)組實(shí)際上是一個(gè)有序圖。圖是一種把 values 映射到 keys 的類型。此類型在很多方面做了優(yōu)化,因此可以把它當(dāng)成真正的數(shù)組來使用,或列表(矢量),散列表(是圖的一種實(shí)現(xiàn)),字典,集合,棧,隊(duì)列以及更多可能性。因?yàn)榭梢杂昧硪粋€(gè) PHP 數(shù)組作為值,也可以很容易地模擬樹。 對(duì)于PHP數(shù)組的理解,嚴(yán)格定義上的數(shù)組和這類腳本數(shù)組不一樣,PHP的數(shù)組和Perl的類似,array.c中明確定義了數(shù)組是一種HashTable 它的“二維”排序速度是很差的 我知道php的功能都是在ext中,不過我想知道的是,在搜索的時(shí)候,你希望這個(gè)擴(kuò)展來做什么?現(xiàn)有的不夠么? 作者: fwolf 時(shí)間: 2006-4-1 06:20 PM 思路不錯(cuò),可是否能夠附上各個(gè)平臺(tái)的ext如何生成? 以及ext的一般編寫方式? 作者: dot 時(shí)間: 2006-4-1 09:57 PM 強(qiáng)貼。 留名。回頭繼續(xù)看。 作者: HeTal 時(shí)間: 2006-4-3 06:25 PM 稍后一定加上, 不過只要自己看看手冊(cè),上面有很詳細(xì)的說明了,到時(shí)我寫幾個(gè)常用的貼上來吧 推薦PECL的mailparse這個(gè)擴(kuò)展,好東西,還有其他的
|
|
|