Discussion: How to Write PHP Extensions_PHP Tutorial
Advantages and disadvantages of extending PHP with C/C++:
Advantages:
Efficiency, or efficiency
Reduce the complexity of PHP scripts, in extreme cases , you only need to simply call an extended function in the PHP script, and then all your functions will be extended and implemented
The disadvantages are also obvious:
Complex development
Reduced maintainability
The development cycle becomes longer. The simplest example is when you use PHP scripts, if you find that a certain judgment condition is wrong, you only need to modify this line. Save it and it will take effect immediately. If it is a PHP extension written in C/C++, then you need to modify the source code, recompile, then reload into PHP, and then restart Apache to see the effect.
If you are familiar with C, writing a PHP extension is not very difficult. PHP itself provides a framework to simplify your development.
The easiest way to start the development of a PHP extension is to use the extension framework wizard ext_skel provided by PHP. It will generate the most basic code necessary for a PHP extension. To use it, you first need to download the PHP source code. , or development package, enter the ext directory of the PHP source code, and you will find this tool.
Generate an extension:
./ext_skel --extname=myext
Enter /myext and select the extension type:
vi config.m4
Select the following two types Just one will do:
//(depends on external library)
dnl PHP_ARG_WITH(myext , for myext support,
dnl Make sure that the comment is aligned:
dnl [ --with-myext Include myext support])
//Remove dnl
PHP_ARG_WITH(myext, for myext support,
Make sure that the comment is aligned:
[ --with-myext Include myext support])
//Or remove//(not relying on external libraries) 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
Modify the header file php_myext.h:
//PHP_FUNCTION(confirm_myext_compiled); /* For testing, remove later. */
//Modify to
PHP_FUNCTION(myext); /* For testing , remove later. */
Modify myext.c:
//Place
//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[] */
//};
//Modify to
zend_function_entry myext_functions[] = {
PHP_FE(myext, NULL) /* For testing, remove later. */
{NULL, NULL, NULL} /* Must be the last line in myext_functions[] */
};
//Add your own function at the bottom of the file
PHP_FUNCTION(myext)
{
zend_printf("Hello World!n");
}
Install your own php extension myext:
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
Modify php.ini and add:
extension = "myext.so"
Restart the web server and check phpinfo to see your extension:
Create a new test php file:
myext();
Execute this file and you will see and become familiar with it But "Hello World!"

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











Golang is better than C in concurrency, while C is better than Golang in raw speed. 1) Golang achieves efficient concurrency through goroutine and channel, which is suitable for handling a large number of concurrent tasks. 2)C Through compiler optimization and standard library, it provides high performance close to hardware, suitable for applications that require extreme optimization.

Golang is suitable for rapid development and concurrent scenarios, and C is suitable for scenarios where extreme performance and low-level control are required. 1) Golang improves performance through garbage collection and concurrency mechanisms, and is suitable for high-concurrency Web service development. 2) C achieves the ultimate performance through manual memory management and compiler optimization, and is suitable for embedded system development.

C interacts with XML through third-party libraries (such as TinyXML, Pugixml, Xerces-C). 1) Use the library to parse XML files and convert them into C-processable data structures. 2) When generating XML, convert the C data structure to XML format. 3) In practical applications, XML is often used for configuration files and data exchange to improve development efficiency.

IIS and PHP are compatible and are implemented through FastCGI. 1.IIS forwards the .php file request to the FastCGI module through the configuration file. 2. The FastCGI module starts the PHP process to process requests to improve performance and stability. 3. In actual applications, you need to pay attention to configuration details, error debugging and performance optimization.

Python and C each have their own advantages, and the choice should be based on project requirements. 1) Python is suitable for rapid development and data processing due to its concise syntax and dynamic typing. 2)C is suitable for high performance and system programming due to its static typing and manual memory management.

Choosing Python or C depends on project requirements: 1) If you need rapid development, data processing and prototype design, choose Python; 2) If you need high performance, low latency and close hardware control, choose C.

Python is suitable for beginners and data science, and C is suitable for system programming and game development. 1. Python is simple and easy to use, suitable for data science and web development. 2.C provides high performance and control, suitable for game development and system programming. The choice should be based on project needs and personal interests.

C isnotdying;it'sevolving.1)C remainsrelevantduetoitsversatilityandefficiencyinperformance-criticalapplications.2)Thelanguageiscontinuouslyupdated,withC 20introducingfeatureslikemodulesandcoroutinestoimproveusabilityandperformance.3)Despitechallen
