Écrire des extensions pour PHP

Magazine
Marque
GNU/Linux Magazine
HS n°
Numéro
55
Mois de parution
juillet 2011
Domaines


Résumé
PHP est un langage de scripting de haut niveau, dynamiquement typé qui propose une sémantique objet. Il est construit au dessus de C (langage de bas niveau, statiquement typé), reposant sur des structures et des types définis dans l'API Zend Engine 2.0.PHP Possède une collection de fonctions très impressionnante qui servent à répondre à des besoins algorithmiques classique et couvrent un très large spectre fonctionnel. Cependant, il peut arriver que dans certains cas, les script exécutés soient particulièrement long car le nombre d'instructions demandées est excessivement important et qu'aucune optimisation de code, en restant dans le cadre de PHP, ne puisse améliorer les performances.Dans ce cas, écrire cet algorithme en C en gérant soi-même les ressources peut permettre de ne pas faire exploser la consommation mémoire ou de rendre le traitement plus rapide. Une autre bonne raison d'écrire des extensions C est le fait de vouloir utiliser une librairie externe.Pour cela, il faut disposer d'un bon niveau en C, et en optimisation de code, puis connaître les bases de l'interaction entre C et PHP.

1. API Zend Engine 2.0

1.1 Créer un module

Qu'est-ce qu'un module PHP ? Basiquement, il s'agit d'une collection de fonctions réunies sous une même dénomination. D'une manière plus complète, il faut aller voir la structure C qui représente un module PHP :

typedef struct _zend_module_entry zend_module_entry;

struct _zend_module_entry {

 unsigned short size;

 unsigned int zend_api;

 unsigned char zend_debug;

 unsigned char zts;

Ces quatre premiers éléments sont standards et permettent d'avoir des informations sur la manière dont le module sera traité par le cœur de PHP.

char *name;

Nom du module :

zend_function_entry *functions;

Liste de fonctions :

int (*module_startup_func)(INIT_FUNC_ARGS);

 int (*module_shutdown_func)(SHUTDOWN_FUNC_ARGS);

 int (*request_startup_func)(INIT_FUNC_ARGS);

 int (*request_shutdown_func)(SHUTDOWN_FUNC_ARGS);

Ceci permet de créer des hooks de manière à intervenir à des moments clés de l'exécution du script.

void (*info_func)(ZEND_MODULE_INFO_FUNC_ARGS);

Permet...

Cet article est réservé aux abonnés. Il vous reste 98% à découvrir.
à partir de 21,65€ HT/mois/lecteur pour un accès 5 lecteurs à toute la plateforme
J'en profite


Articles qui pourraient vous intéresser...

Analyse de code avec Cppcheck (et intégration sous Eclipse)

Magazine
Marque
GNU/Linux Magazine
HS n°
Numéro
112
Mois de parution
janvier 2021
Domaines
Résumé

Zut ! Encore un plantage !!! Combien de fois n’avez vous pas prononcé cette phrase, face au blocage d’une application de bureautique bien connue ou face à un crash système ? Sur un ordinateur de bureau, ce type de désagrément n’a d’autre effet que de faire monter votre niveau d’énervement, mais dans le cas d’un système embarqué, les effets sont bien plus graves. Heureusement, Cppcheck est là pour vous aider.

Réinvention de la roue... des temporisations

Magazine
Marque
GNU/Linux Magazine
HS n°
Numéro
112
Mois de parution
janvier 2021
Domaines
Résumé

Les temporisations sont essentielles au sein des systèmes d'exploitation et dans certaines applications, pour déclencher des actions à l'échéance d'un délai. Il existe différents algorithmes pour les gérer de manière efficace. Cet article présente la fusion de deux d'entre eux, pour en tirer le meilleur.

Mesure fine de déplacement par RADAR interférométrique à synthèse d’ouverture (InSAR) par radio logicielle

Magazine
Marque
GNU/Linux Magazine
Numéro
244
Mois de parution
janvier 2021
Domaines
Résumé

Nous avons démontré dans le premier article de la série la capacité à mesurer la distance à une cible (range compression), puis dans un deuxième temps à détecter l’angle d’arrivée du signal (azimuth compression). Fort de cette capacité de cartographier des cibles, nous allons conclure cette série sur la conception de RADAR à base de radio logicielle, et le traitement des signaux associé, par la mesure fine de déplacement des cibles par analyse de la phase (interférométrie) du signal, lors de la répétition des mesures.

Utilisation de l’IDE Visual Studio Code

Magazine
Marque
GNU/Linux Magazine
HS n°
Numéro
112
Mois de parution
janvier 2021
Domaines
Résumé

Visual Studio Code, un outil dont Microsoft est à l’origine, est Open Source et gratuit, multiplateforme et ouvert grâce à son architecture d’extensions. Mis à jour mensuellement, il est écrit par des développeurs pour des développeurs.

La surcharge ou overloading en Python

Magazine
Marque
GNU/Linux Magazine
HS n°
Numéro
112
Mois de parution
janvier 2021
Domaines
Résumé

On vous l’a dit et répété : Python est un langage à typage dynamique ! Ah... donc, on ne peut pas réaliser de surcharge de fonctions ou de méthodes ? Pour les débutants, on dira non, pour les autres, on peut toujours s’arranger avec Python...