Politique de prise en charge du runtime pour PHP

La bibliothèque de tracing Datadog PHP est open source. Consultez le référentiel GitHub pour en savoir plus.

La solution APM Datadog pour PHP s’appuie sur des dépendances définies dans des versions spécifiques du système d’exploitation du host, du runtime PHP, de certaines bibliothèques PHP, ainsi que de l’Agent ou l’API Datadog. Lorsque ces versions cessent d’être prises en charge et maintenues, la prise en charge par APM pour PHP s’arrête également.

Niveaux de prise en charge

NiveauPrise en charge fournie
Aucune prise en chargeAucune implémentation. Contactez l’assistance clientèle pour toute demande spéciale.
BêtaImplémentation initiale. Peut ne pas encore contenir toutes les fonctionnalités. La prise en charge des nouvelles fonctionnalités, les corrections de bugs et le déploiement de patchs de sécurité sont assurés dans la mesure du possible uniquement.
Disponibilité généraleImplémentation complète de toutes les fonctionnalités. Prise en charge totale des nouvelles fonctionnalités, des corrections de bugs et des patchs de sécurité.
MaintenanceImplémentation complète des fonctionnalités existantes. Aucune nouvelle fonctionnalité n’est ajoutée. Prise en charge des corrections de bugs et des patchs de sécurité uniquement.
LegacyImplémentation legacy. Certaines fonctionnalités limitées peuvent être proposées, mais aucune maintenance n’est assurée. Contactez l’équipe d’assistance en cas de demande spéciale.
Fin de cycle de vieAucune assistance. La version peut quand même être utilisée, mais aucune correction de bug n’est assurée.

APM pour PHP prend en charge les versions suivantes de PHP :

Remarque : PHP 5.x est entièrement pris en charge jusqu'à la version 0.75.0. Il est désormais en mode maintenance, et seules les mises à jour de sécurité ainsi que les corrections de bugs importantes sont assurées jusqu'au 31 décembre 2023.
Si vous utilisez une version 5.x de PHP dans votre application et que votre activité nécessite impérativement une fonctionnalité essentielle, contactez l'assistance Datadog.
Nous vous conseillons d'utiliser l'une des versions officiellement prises en charge de PHP, notamment les versions 7.4, 8.0 et 8.1.
Version de PHPNiveau de prise en chargeVersion du package
8.2.xDisponibilité générale> 0.82.0+
8.1.xDisponibilité générale> 0.66.0+
8.0.xDisponibilité générale> 0.52.0+
7.4.xDisponibilité généraleToutes
7.3.xDisponibilité généraleToutes
7.2.xDisponibilité généraleToutes
7.1.xDisponibilité généraleToutes
7.0.xDisponibilité généraleToutes
5.6.xMaintenance (jusqu’au 31 décembre 2023)Toutes
5.5.xMaintenance (jusqu’au 31 décembre 2023)Toutes
5.4.xMaintenance (jusqu’au 31 décembre 2023)Toutes

APM pour PHP prend en charge les SAPI suivants :

SAPIType de prise en charge
apache2handlerPrise en charge complète
cliPrise en charge complète
fpm-fcgiPrise en charge complète
cgi-fcgiPrise en charge complète

Architectures de processeur prises en charge

APM pour PHP prend en charge les architectures suivantes :

Architectures de processeurNiveau de prise en chargeVersion du package
Linux GNU amd64 (x86-64-linux-gnu)Disponibilité généraleToutes
Linux MUSL amd64 (x86-64-linux-musl)Disponibilité généraleToutes
Linux GNU arm64 (aarch64-linux-gnu)Disponibilité générale> 0.78.0
Linux MUSL arm64 (aarch64-linux-musl)Disponibilité générale> 0.78.0

Intégrations

Compatibilité des frameworks Web

Datadog prend en charge tous les frameworks Web PHP par défaut, soit via une instrumentation au niveau du framework, soit via une solution de tracing Web générique.

L’instrumentation au niveau du framework implique le tracing des méthodes internes et l’application de tags spécifiques au framework.

Le tracing Web générique utilise une span web.request pour suivre la latence et les erreurs générées par l’appel, ainsi que des spans pour les bibliothèques prises en charge, par exemple pour des clients de base de données et HTTP.

Le tableau suivant énumère plusieurs frameworks et versions pour lesquels Datadog peut surveiller des traces.

Fraweworks Web :

ModuleVersionsType de prise en chargeNiveau d’instrumentation
CakePHP2.xToutes les versions de PHP prises en chargeInstrumentation au niveau du framework
CodeIgniter2.xPHP 7+Instrumentation au niveau du framework
CodeIgniter3.xPHP 7+Tracing Web générique
DrupalToutes les versions PHPTracing Web générique
FuelPHP1.1PHP 7+Tracing Web générique
Laravel4.2, 5.x, 6.xToutes les versions de PHP prises en chargeInstrumentation au niveau du framework
Laravel 88.x (traceur 0.52.0+)Toutes les versions PHPInstrumentation au niveau du framework
Lumen5.2+Toutes les versions de PHP prises en chargeInstrumentation au niveau du framework
Magento1, 2Toutes les versions PHPTracing Web générique
Neos Flow1.1Toutes les versions de PHP prises en chargeTracing Web générique
Phalcon1.3, 3.4Toutes les versions de PHP prises en chargeTracing Web générique
RoadRunner2.xToutes les versions de PHP prises en chargeInstrumentation au niveau du framework
Slim2.x, 3.x, 4.xToutes les versions de PHP prises en chargeInstrumentation au niveau du framework
Symfony 33.3, 3.4Toutes les versions de PHP prises en chargeInstrumentation au niveau du framework
Symfony 44.xToutes les versions de PHP prises en chargeInstrumentation au niveau du framework
Symfony 55.x (traceur 0.50.0+)Toutes les versions PHPInstrumentation au niveau du framework
WordPress4.x, 5.xPHP 7+Instrumentation au niveau du framework
Yii1.1, 2.0Toutes les versions PHPInstrumentation au niveau du framework
Zend Framework1.12Toutes les versions PHPInstrumentation au niveau du framework
Zend Framework2.xToutes les versions PHPTracing Web générique

Attention : même si votre framework Web n’est pas répertorié, il est par défaut pris en charge avec la dernière version du traceur.

Datadog améliore continuellement le tracing des frameworks Web PHP. Pour demander la prise en charge d’autres métadonnées de span et d’autres composants internes de framework, contactez notre formidable équipe d’assistance.

Compatibilité des bibliothèques CLI

Le tracing depuis le CLI SAPI est désactivé par défaut. Pour activer le tracing des scripts CLI PHP, définissez DD_TRACE_CLI_ENABLED=true.

ModuleVersionsType de prise en charge
Console CakePHP2.xPrise en charge complète
Laravel Artisan5.xPrise en charge complète

Pour demander la prise en charge d’une autre bibliothèque CLI, contactez notre formidable équipe d’assistance.

Compatibilité des datastores

ModuleVersionsType de prise en charge
Amazon RDS (avec PDO ou MySQLi)(Toute version de PHP prise en charge)Prise en charge complète
Elasticsearch1+Prise en charge complète
EloquentVersions prises en charge par LaravelPrise en charge complète
Memcached(Toute version de PHP prise en charge)Prise en charge complète
MongoDB - via l’extension mongo1.4.xPrise en charge complète
MySQLi(Toute version de PHP prise en charge)Prise en charge complète
PDO (MySQL, PostgreSQL, MariaDB)(Toute version de PHP prise en charge)Prise en charge complète
PhpRedis3, 4, 5PHP 7, 8
Predis1.1Prise en charge complète

Pour demander la prise en charge d’un autre datastore, contactez notre formidable équipe d’assistance.

Compatibilité des bibliothèques

ModuleVersionsType de prise en charge
Curl(Toute version de PHP prise en charge)Prise en charge complète
Guzzle5.xPrise en charge complète
Guzzle6.xPrise en charge complète

Pour demander la prise en charge d’une autre bibliothèque, contactez notre formidable équipe d’assistance.

Call stacks profondes sur PHP 5

Les call stacks sont limitées sur PHP 5. Pour en savoir plus, consultez la page de dépannage des call stacks profondes.

Générateurs

L’instrumentation des générateurs n’est pas prise en charge sur PHP 5 et PHP 7.

PCNTL

Datadog ne permet pas le tracing de processus forkés via pcntl. Lorsqu’un appel à pcntl_fork est détecté, le tracing est désactivé dans le processus forké. Le processus principal peut toujours être tracé.

Si l’application invoque pcntl_unshare(CLONE_NEWUSER); et que le traceur est installé, un plantage fatal se produit. Ce problème survient car unshare avec CLONE_NEWUSER nécessite un processus sans thread, alors que le traceur PHP utilise un thread séparé pour envoyer les traces à l’Agent Datadog sans bloquer le processus principal.

Pour aller plus loin

Documentation, liens et articles supplémentaires utiles: