电竞比分网-中国电竞赛事及体育赛事平台

分享

PHP終極提速

 Ralf_Jones 2006-06-28
Board logo

標(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ù)

PHP_FUNCTION(test)
{
        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;
}
這是我在PHP里調(diào)用的代碼

<?
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";
?>
程序執(zhí)行結(jié)果:

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í)際使用上的考慮
商業(yè)模塊也不應(yīng)該做so,出于道義上的考慮

分享,是一種美德
搜索動(dòng)作是應(yīng)該由PHP發(fā)起,搜索過程才不是由PHP完成
商業(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ò)展,好東西,還有其他的




歡迎光臨 喜悅國(guó)際村 (http://www./happy/)

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多