COM_ADDREF |
COM : Adresse de référence |
---|---|
PHP 4.1.0 à 4.4.9 |
Syntaxe
function com_addref(); |
Description
Cette fonction permet d'effectuer l'incrémentation du compteur de références pour un composant COM.
Remarques
- Gestion manuelle du cycle de vie des objets COM : com_addref permet d'augmenter le compteur de références d'un objet COM, ce qui empêche sa destruction prématurée par PHP. Cela est utile lorsqu'un objet COM est partagé entre plusieurs parties d'un script et ne doit pas être libéré automatiquement.
- Complémentaire à com_release : La fonction com_addref est souvent utilisée avec com_release, qui fait l'inverse en décrémentant le compteur de références. Une mauvaise gestion de ces fonctions peut provoquer des fuites de mémoire ou des objets COM persistants en mémoire sans possibilité de les libérer proprement.
- Utile dans les scénarios d'automatisation Windows : Dans les scripts PHP interagissant avec des applications Windows comme Microsoft Word ou Excel via COM, com_addref peut garantir que l'objet reste en mémoire tant qu'il est nécessaire, évitant ainsi des erreurs d'accès à des objets détruits.
- Rarement nécessaire dans un usage classique : En général, PHP gère automatiquement les références aux objets COM grâce à son système de comptage interne. L'utilisation explicite de com_addref n'est nécessaire que dans des scénarios complexes où PHP libérerait un objet trop tôt.
- Peut causer des fuites de mémoire : Un mauvais usage de com_addref sans appel correspondant à com_release peut entraîner des fuites de mémoire, car l'objet COM ne sera jamais libéré, restant chargé même après la fin du script PHP. Il faut donc l'utiliser avec précaution et toujours équilibrer les appels.
- Fonctionnalité spécifique à Windows et COM : Comme toutes les fonctions COM en PHP, com_addref est uniquement disponible sur les environnements Windows avec l'extension COM activée. Elle n'a aucun effet sur d'autres systèmes d'exploitation comme Linux ou macOS, où PHP ne prend pas en charge COM nativement.
- Compatible uniquement avec les objets COM en PHP : com_addref ne fonctionne qu'avec des objets instanciés via la classe COM en PHP. Elle ne peut pas être utilisée avec d'autres types d'objets PHP, ce qui la rend spécifique aux interactions avec les objets COM sous Windows.
- Peut améliorer la stabilité dans les applications multi-processus léger : Dans des contextes où plusieurs processus légers ou processus PHP accèdent au même objet COM, com_addref peut être utile pour éviter qu'un processus léger ne libère prématurément un objet encore utilisé par un autre. Cependant, PHP n'étant pas nativement multi-processus léger, ce cas est relativement rare.
Dernière mise à jour : Mercredi, le 25 mars 2015