Red de conocimiento informático - Material del sitio web - Cómo utilizar el lenguaje C para desarrollar una biblioteca de extensiones PHP en la plataforma Windows

Cómo utilizar el lenguaje C para desarrollar una biblioteca de extensiones PHP en la plataforma Windows

Cómo usar el lenguaje C para enviar extensiones PHP

Función funcional: PHP enfrenta el número simbólico de números enteros. Su implementación interna es en realidad larga y sin signo. En una máquina de 32 bits, PHP puede representar el número entero 2^31. -1. La aplicación general toca 2^31-1, el número en 2^32 se puede expresar como una cadena. Se expresa en int_ext mixto (cadena en). se devuelve el número entero y se devuelve la cadena.

Pasos para publicar la extensión: (primero debe cargar el código fuente de PHP y cargar php-5.3.14)

1 Construya el archivo extendido esqueleto

2 Construye el esqueleto extendido

3 Construye el esqueleto extendido

p>

4 Construye un esqueleto extendido

5 Construye un esqueleto extendido esqueleto

6 Construir un esqueleto extendido 3.14)

1 Construir un esqueleto extendido

[plain] ver Plaincopyprint?

01.cd php-5.3.14/ text

02.../ext_skel --extname=int_ext

cd php-5.3.14/ext

./ext_skel --extname=int_ext

2 Modificar parámetros de compilación

[plain]¿Ver Plaincopyprint?

01.cd php-5.3.14/ext/int_ext

02.vi config.m4

cd php-5.3.14/ext/int_ext

vi config.m4 drop PHP_ARG_ENABLE(int_ext, si se habilita el soporte int_ext

[ --enable-int_ext habilita el soporte int_ext]) Modificado dos líneas antes de dnl:

[plain] ¿ver Plaincopyprint?

01.1.dnl; de lo contrario, use enable:

02.2. php_arg_enable(int_ext, si se habilita la compatibilidad con int_ext,

02.2. para habilitar la compatibilidad con int_ext,

02.2 Si se habilita la compatibilidad con int_ext,

03.3 dnl garantiza que los comentarios estén alineados:

04.4.[dnl, en caso contrario, utilice enable. :

2. PHP_ARG_ENABLE(int_ext, si se habilita la compatibilidad con int_ext,

3. dnl garantiza que los comentarios estén alineados:

4.[--enable- int_ext habilita la compatibilidad con int_ext])

3 Escribir código C

[plain]¿Ver Plaincopyprint?

01.cd php-5.3.14/ext/ int_ext

02.vi php_int_ext.h

03.

cd php-5.3.14/ext/int_ext

vi php_int_ext.h

# PHP_FUNCTION (confirm_int_ext_compiled); frente a nueva línea PHP_FUNCTION(int_ext);

cd php-5.3.14/ext/int_ext

vi php_int_ext.h

# PHP_FUNCTION( confirm_int_ext_compiled); nueva línea PHP_FUNCTION(i);

nt_ext);[plain] ver Plaincopyprint?

01.cd php-5.3.14/ext/int_ext

02.vi int_ext.c

03. #PHP_FE(confirm_int_ext_compiled, NULL) face add PHP_FE( int_ext, NULL) agregado:

04.1. zend_function_entry int_ext_functions[] = {

05.2.PHP_FE(confirm_int_ext_compiled, NULL) /* Usar Para realizar pruebas, se eliminará más adelante. */

03.#PHP_FE(confirm_int_ext_compiled, NULL) se agrega al frente de int_ext y se elimina más tarde. */

06.3.PHP_FE(int_ext, NULL) /* Para pruebas, se eliminará más adelante. */

07.4.{null, null, null}/* Debe ser la última línea en int_ext_functions[] */

07.3.PHP_FE(confirm_int_ext_compiled, NULL) /* Usado para Pruebe y elimine más tarde. funciones[] */

08.5.};

cd php-5.3.14/ext/int_ext

vi int_ext.c

#PHP_FE(confirm_int_ext_compiled, NULL) Agregar PHP_FE a la cara.(int_ext, NULL) Agregar:

1. zend_function_entry int_ext_functions[] = {

2. /* Usado para pruebas, eliminado más tarde. */