Cómo escribir extensiones PHP C
Primero, descargue el paquete de código fuente PHP, asumiendo que el código fuente El directorio del paquete es /software/php-5.2.
#>cd/software/php-5.2.13/ text
2. Supongamos que queremos desarrollar una extensión llamada caleng_module. que contiene dos funciones: a - Procesar la suma de dos números enteros; b - procesar la salida repetida de cadenas;
1. Primero escriba un archivo de definición de función, en el que esté escrito el prototipo de función con el sufijo def, asumiendo: caleng_module.def
int a(int x, int y)
string b(string str, int n)
2. generador, creará automáticamente el directorio de extensión caleng_module
#>.
/ext_skel --extname=caleng_module --proto=caleng_module.def
3. Modifique el archivo de configuración: #> vim /software/php-5.2.13/ext/caleng_module/config.m4. siguientes líneas La marca de comentario "dnl" se modifica de la siguiente manera:
PHP_ARG_ENABLE(myfunctions, si se debe habilitar el soporte de myfunctions,
Asegúrese de que los comentarios estén alineados:
[ --enable- myfunctions habilita el soporte de myfunctions])
4. Mejorar las funciones a y b: #> vim /software/php-5.2.13/ext/caleng_module/ caleng_module.c
PHP_FUNCTION(a )
{
int x, y, z;
int argc = ZEND_NUM_ARGS();
if (zend_parse_parameters(argc TSRMLS_CC , "ll", &x, &y) == FALLO)
return;
z = x + y;
RETURN_LONG (z);
}
PHP_FUNCTION(b)
{
char *str = NULL;
int argc = ZEND_NUM_ARGS() ;
int str_len;
long n;
char *resultado;
char *ptr;
int resultado _length;
if (zend_parse_parameters(argc TSRMLS_CC, "sl", &str, &str_len, &n) == FALLO)
return; p>
result_length = str_len * n;
resultado = (char *) emalloc(result_length + 1);
ptr = resultado; mientras (n--) {
memcpy(ptr, str, str_len
ptr += str_len;
}
*ptr='/0' ;
RETURN_STRINGL(result, result_length, 0);
}
3. Compile e instale, asumiendo que el directorio de instalación de php es: /usr/ localhost/ webserver/php
#> cd /software/php-5.2.13/ext/caleng_module
#> /usr/localhost/webserver/ php/bin/phpize
#> ./configure --with-php-config=/usr/localhost/webserver/php/bin/php-config
#> make
#> make install
Ahora se instalará en /usr/local/webserver/php/lib/php/exte
nsions/no-debug-non-zts-20060613
El archivo caleng_module.so se generará en /usr/webserver/php/lib/php/extensions/no-debug-non-zts-20060613 directorio
Inserte el archivo caleng_module.so en el archivo de configuración php.ini y agregue: extensión=caleng_ module.so.
Completado