欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

探討:如何編寫PHP擴(kuò)展

 更新時(shí)間:2013年06月13日 11:38:30   作者:  
本篇文章是對(duì)如何編寫PHP擴(kuò)展進(jìn)行了詳細(xì)的分析介紹, 需要的朋友參考下

用C/C++擴(kuò)展PHP的優(yōu)缺點(diǎn):
優(yōu)點(diǎn):
效率,還是效率
減少PHP腳本的復(fù)雜度, 極端情況下, 你只需要在PHP腳本中,簡單的調(diào)用一個(gè)擴(kuò)展實(shí)現(xiàn)的函數(shù),然后你所有的功能都就被擴(kuò)展實(shí)現(xiàn)了
而缺點(diǎn)也是顯而易見的:
開發(fā)復(fù)雜
可維護(hù)性降低
開發(fā)周期變長, 最簡單的一個(gè)例子,當(dāng)你用PHP腳本的時(shí)候, 如果你發(fā)現(xiàn)某個(gè)判斷條件出錯(cuò),你只要修改了這一行,保存,那么就立刻能見效。 而如果是在C/C++編寫的PHP擴(kuò)展中, 那你可需要,修改源碼,重新編譯,然后重新load進(jìn)PHP, 然后重啟Apache,才能見效。
如果你熟悉C,那么編寫一個(gè)PHP擴(kuò)展,并不是什么非常難的事情。 PHP本身就提供了一個(gè)框架,來簡化你的開發(fā)。
最簡單的方式來開始一個(gè)PHP擴(kuò)展的開發(fā),是使用PHP提供的擴(kuò)展框架wizard ext_skel, 它會(huì)生成一個(gè)PHP擴(kuò)展所必須的最基本的代碼, 要使用它,首先你要下載PHP的源碼,或者開發(fā)包, 進(jìn)入PHP源碼的ext目錄, 就會(huì)發(fā)現(xiàn)這個(gè)工具。
生成一個(gè)擴(kuò)展:
./ext_skel --extname=myext
進(jìn)入/myext,選擇擴(kuò)展類型:
vi config.m4
下面兩種類型選一個(gè)就行了:

復(fù)制代碼 代碼如下:

//(依賴外部庫)
dnl PHP_ARG_WITH(myext, for myext support,
dnl Make sure that the comment is aligned:
dnl [ --with-myext Include myext support])
//去掉dnl
 PHP_ARG_WITH(myext, for myext support,
 Make sure that the comment is aligned:
 [  --with-myext             Include myext support])

//或者將 //(不依賴外部庫) dnl PHP_ARG_ENABLE(myext, whether to enable myext support,dnl Make sure that the comment is aligned:dnl [ --enable-myext Enable myext support])//去掉dnl
修改頭文件php_myext.h:
//PHP_FUNCTION(confirm_myext_compiled); /* For testing, remove later. */
//修改為
PHP_FUNCTION(myext); /* For testing, remove later. */
修改myext.c:
//將
//zend_function_entry myext_functions[] = {
// PHP_FE(confirm_myext_compiled, NULL) /* For testing, remove later. */
// {NULL, NULL, NULL} /* Must be the last line in myext_functions[] */
//};
//修改為
zend_function_entry myext_functions[] = {
PHP_FE(myext, NULL) /* For testing, remove later. */
{NULL, NULL, NULL} /* Must be the last line in myext_functions[] */
};
//在文件底部添加自己的函數(shù)
PHP_FUNCTION(myext)
{
zend_printf("Hello World!\n");
}
安裝自己的php擴(kuò)展myext:
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install


修改php.ini,添加:
extension = "myext.so"
重啟web服務(wù)器,查看phpinfo,即可看到自己的擴(kuò)展:



新建測試php文件:

<?php
myext();

執(zhí)行此文件,即可看到再熟悉不過的“Hello World!”。



相關(guān)文章

  • MayFish PHP的MVC架構(gòu)的開發(fā)框架

    MayFish PHP的MVC架構(gòu)的開發(fā)框架

    MayFish,一款PHP的MVC架構(gòu)的開發(fā)框架。小巧精煉。歡迎大家測試和使用,歡迎大家對(duì)他的發(fā)展提出更好的建議。
    2009-08-08
  • PHP中如何調(diào)用webservice的實(shí)例參考

    PHP中如何調(diào)用webservice的實(shí)例參考

    本篇文章介紹了,PHP中如何調(diào)用webservice的實(shí)例參考。需要的朋友參考下
    2013-04-04
  • 詳解PHP滲透測試文件包含漏洞與利用

    詳解PHP滲透測試文件包含漏洞與利用

    這篇文章主要介紹了PHP滲透測試文件包含漏洞與利用,文件漏洞是一個(gè)非常常見的漏洞,這種類型的漏洞雖然有些難以利用,但一旦利用成功就會(huì)造成非常危險(xiǎn)的后果。本文將詳細(xì)講講PHP反序列化漏洞的原理及示例,感興趣的可以了解一下
    2022-07-07
  • 基于PHP創(chuàng)建Cookie數(shù)組的詳解

    基于PHP創(chuàng)建Cookie數(shù)組的詳解

    本篇文章是對(duì)在PHP中創(chuàng)建Cookie數(shù)組的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-07-07
  • PHP使用適合閱讀的格式顯示文件大小的方法

    PHP使用適合閱讀的格式顯示文件大小的方法

    這篇文章主要介紹了PHP使用適合閱讀的格式顯示文件大小的方法,實(shí)例分析了php實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • 淺談Eclipse PDT調(diào)試PHP程序

    淺談Eclipse PDT調(diào)試PHP程序

    本文主要介紹的是eclipse和pdt的安裝、調(diào)試以及xdebug的配置方法,并用eclipse pdt進(jìn)行斷點(diǎn)調(diào)試PHP代碼。
    2014-06-06
  • PHP獲取指定時(shí)間段之間的 年,月,天,時(shí),分,秒

    PHP獲取指定時(shí)間段之間的 年,月,天,時(shí),分,秒

    前端傳倆個(gè)標(biāo)準(zhǔn)的 時(shí)間格式過來,格式像2009-05-12 12:12:30,然后根據(jù)需要返回這個(gè)時(shí)間段的不同單位的表示,對(duì)于時(shí)間格式的校驗(yàn)我這里代碼沒貼出來,所以用的時(shí)候自己考慮加上
    2016-06-06
  • 如何解決php domdocument找不到的問題

    如何解決php domdocument找不到的問題

    在本篇文章里小編給大家整理的是一篇關(guān)于php domdocument找不到的解決辦法,有需要的朋友們可以跟著學(xué)習(xí)參考下。
    2021-07-07
  • 國外十大最流行的PHP框架排名

    國外十大最流行的PHP框架排名

    本文來自國外的一個(gè)PHP技術(shù)人員網(wǎng)站,總結(jié)了國外的十個(gè)目前最流行的PHP MVC框架。具體排名順序未必準(zhǔn)確,還有些知名框架,如Kohana等也沒有提及。不過仍可以做為一篇不錯(cuò)的參考
    2013-07-07
  • php 數(shù)組使用詳解 推薦

    php 數(shù)組使用詳解 推薦

    對(duì)于網(wǎng)頁編程來說,最重要的就是存取和讀寫數(shù)據(jù)了。存儲(chǔ)方式可能有很多種,可以是字符串、數(shù)組、文件的形式等,今天學(xué)習(xí)了數(shù)組,可以說是PHP的數(shù)據(jù)應(yīng)用中較重要的一種方式。
    2011-06-06

最新評(píng)論