今天有个网友发信问我它开放了一个 php 的扩展,release 的版本是能运行的,但是这个debug的版本 不能运行。
其实,基本原理很简单,PHP的内核 在 php5ts.dll, 如果你是debug 版本的, 那么就要调用 php5ts_debug.dll 。这个dll
php 官方没有提供,不过你可以重新编译PHP得到。当然,重新编译PHP的话,在windows下是一项艰巨的任务。
还有,php.exe 这个文件也必须是 debug 版本的,否则会报下面的错误:
PHP Warning: PHP Startup: vehicles: Unable to initialize module
Module compiled with module API=20060613, debug=1, thread-safety=1
PHP compiled with module API=20060613, debug=0, thread-safety=1
These options need to match
开发PHP扩展的朋友一定要注意。
还有,顺便提一句,为什么明明PHP的速度要比java速度慢,但是很多时候,网页相同一个功能写出来却是PHP快呢?
很简单,PHP的函数是C写的,有时候,内部封装了很多逻辑 和 运算。所以,PHP显的速度快了。比如,试试PHP的分词
扩展 和 java的分词软件,同样是模仿中科院的分词,算法基本一样, java 加载字典要 5s 左右,而用 C 写的PHP扩展只要 0.5s左右。
所以,如果你要开发企业级的应用,研究PHP的朋友, 学习些C扩展知识还是有好处的,当然C语言基础要好点。
其实,基本原理很简单,PHP的内核 在 php5ts.dll, 如果你是debug 版本的, 那么就要调用 php5ts_debug.dll 。这个dll
php 官方没有提供,不过你可以重新编译PHP得到。当然,重新编译PHP的话,在windows下是一项艰巨的任务。
还有,php.exe 这个文件也必须是 debug 版本的,否则会报下面的错误:
PHP Warning: PHP Startup: vehicles: Unable to initialize module
Module compiled with module API=20060613, debug=1, thread-safety=1
PHP compiled with module API=20060613, debug=0, thread-safety=1
These options need to match
开发PHP扩展的朋友一定要注意。
还有,顺便提一句,为什么明明PHP的速度要比java速度慢,但是很多时候,网页相同一个功能写出来却是PHP快呢?
很简单,PHP的函数是C写的,有时候,内部封装了很多逻辑 和 运算。所以,PHP显的速度快了。比如,试试PHP的分词
扩展 和 java的分词软件,同样是模仿中科院的分词,算法基本一样, java 加载字典要 5s 左右,而用 C 写的PHP扩展只要 0.5s左右。
所以,如果你要开发企业级的应用,研究PHP的朋友, 学习些C扩展知识还是有好处的,当然C语言基础要好点。