如何使用C建立php擴充

來源:互聯網
上載者:User

使用C建立php擴充

優點:

1.提高運行效率。

2.降低php複雜度,可以直接調用擴充方法實現功能。

3.方便與第三方庫互動。

缺點:

1.開發比php複雜。

2.可維護性降低。

3.開發週期變長。php開發,發現問題後,只要修複問題,即可見到效果。如果使用擴充,修複後需要重新編譯,重啟服務,才能見到效果。

首先,假定需要實現一個方法:將url字串轉換成超連結。

php實現方法:

<?php        function strtolink($url, $name='', $openwin=0){      $name = $name==''? $url : $name;      $openwin = $openwin==1? ' target="_blank" ' : '';      return '<a href="'.$url.'" '.$openwin.'>'.$name.'</a>';  }        echo strtolink('http://blog.csdn.net/fdipzone', 'fdipzone blog', 1);        ?>

現在使用C來做這個方法的擴充,開發php擴充需要使用ext_skel工具包,此工具包在php安裝包的 /ext/ 中,例如:php-5.3.15/ext/ext_skel

1.建立 skel 檔案,儲存為 strtolink.skel

string strtolink(string url, string name, int openwin)

2.建立擴充架構

./ext_skel --extname=strtolink --proto=strtolink.skel

cd strtolink

3.修改設定檔 config.m4

將這10,11,12三行前面的 dnl 去掉  dnl PHP_ARG_WITH(strtolink, for strtolink support,  dnl Make sure that the comment is aligned:  dnl [  --with-strtolink             Include strtolink support])        即修改為:  PHP_ARG_WITH(strtolink, for strtolink support,  Make sure that the comment is aligned:  [  --with-strtolink             Include strtolink support])

4.實現功能,修改strtolink.c,將PHP_FUNCTION(strtolink)這個方法修改為:

PHP_FUNCTION(strtolink)  {          char *url = NULL;          char *name = NULL;          int argc = ZEND_NUM_ARGS();          int url_len;          int name_len;          long openwin = 0;          char *opentag;          char *result;                if (zend_parse_parameters(argc TSRMLS_CC, "s|sl", &url, &url_len, &name, &name_len, &openwin) == FAILURE)                  return;                if (name == NULL || strlen(name)==0){                  name = url;          }                if (openwin == 1){                  opentag = " target=\"_blank\" ";          }else{                  opentag = "";          }                url_len = spprintf(&result, 0, "<a href=\"%s\" %s>%s</a>", url, opentag, name);              RETURN_STRINGL(result, url_len, 0);                php_error(E_WARNING, "strtolink: not yet implemented");  }

本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/C/

相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。