Tous les produits
Search
Centre de documentation

Function Compute:Handlers

Dernière mise à jour :Aug 12, 2026

Les handlers PHP permettent de répondre aux événements et d'exécuter votre logique métier. Cette rubrique présente les concepts, la structure et des exemples de handlers PHP.

Qu'est-ce qu'un handler ?

Le handler d'une fonction FC correspond à la méthode de votre code qui traite les requêtes. Lors de l'appel de votre fonction FC, Function Compute exécute le handler spécifié. Configurez ce handler dans la console Function Compute en définissant le paramètre Handler.

Pour une fonction PHP dans FC, le handler doit respecter le format filename.methodname. Par exemple, si votre fichier s'intitule main.php et que la méthode se nomme handler, alors le handler est main.handler.

Pour plus d'informations sur la définition des fonctions FC, consultez Créer une fonction déclenchée par un événement.

La configuration des handlers doit être conforme aux spécifications de Function Compute. Ces spécifications varient selon le type de handler.

Signature du handler

Le code suivant définit une signature de handler simple.

<?php

function handler($event, $context) {
  return 'hello world';
}

Les paramètres sont décrits ci-dessous :

  • handler : nom de la méthode. Il correspond au Handler configuré dans la console Function Compute. Par exemple, si le Handler d'une fonction FC est défini sur index.handler, Function Compute charge la fonction handler définie dans index.php et lance l'exécution à partir de cette fonction handler.

  • $event : paramètre transmis lors de l'appel de la fonction. Son type de données est string. Une fonction PHP utilise directement le paramètre event spécifié sans aucun prétraitement. Analysez le paramètre event dans votre fonction selon vos besoins. Par exemple, si les données d'entrée sont une chaîne JSON, convertissez-les en tableau (Array).

  • $context : contient les informations d'exécution de la fonction, telles que l'ID de requête et les identifiants temporaires. Exploitez ces informations dans votre code.

Remarque

Pour utiliser des déclencheurs HTTP ou des noms de domaine personnalisés afin d'accéder aux fonctions, récupérez la structure de la requête avant de définir les réponses HTTP. Pour plus d'informations, consultez Utiliser un déclencheur HTTP pour appeler une fonction.

Exemple 1 : Analyser des paramètres au format JSON

Sample Code

Function Compute transmet les paramètres au format JSON sous forme de chaîne brute. Vous devez donc les analyser dans votre code. L'exemple suivant montre comment analyser un événement au format JSON.

<?php

function handler($event, $context) {
  $v = json_decode($event, true);
  var_dump($v['key1']);
  var_dump($v['key2']);
  var_dump($v['key3']);
  return $v;
}

Prérequis

Vous avez créé une fonction utilisant l'environnement d'exécution PHP. Pour plus d'informations, consultez Créer une fonction déclenchée par un événement.

Procédure

  1. Connectez-vous à la console Function Compute. Dans le volet de navigation de gauche, choisissez Function Management > Functions.

  2. Dans la barre de navigation supérieure, sélectionnez une région. Sur la page Functions, cliquez sur la fonction cible.

  3. Sur la page de détails de la fonction, cliquez sur l'onglet Code, saisissez l'exemple de code dans l'éditeur, puis cliquez sur Deploy.

    Remarque

    Dans cet exemple, le handler correspond à la méthode handler située dans index.php. Si le handler de votre fonction est configuré différemment, mettez à jour les noms du fichier et de la méthode afin qu'ils correspondent à votre configuration.

  4. Dans l'onglet Code, cliquez sur l'icône down située à droite de Test Function, sélectionnez Configure Test Parameters dans la liste déroulante, saisissez les paramètres de test suivants, puis cliquez sur OK.

    {
      "key1": "value1",
      "key2": "value2",
      "key3": {
        "v1": true,
        "v2": "bye",
        "v3": 1234
      }
    }
  5. Cliquez sur Test Function.

    Après l'exécution de la fonction, le contenu au format JSON est renvoyé et les valeurs de key1, key2 et key3 s'affichent dans les journaux.

Exemple 2 : Accéder en toute sécurité aux ressources OSS

Sample Code

Utilisez les identifiants temporaires fournis par Function Compute pour accéder à Object Storage Service (OSS). Le code suivant en fournit un exemple.

<?php

use OSS\OssClient;
use OSS\Core\OssException;

function handler($event, $context) {
    /*
      An AccessKey pair of an Alibaba Cloud account grants full permissions for all API operations. We recommend that you use a RAM user for API calls and routine maintenance.
      To mitigate the risk of AccessKey leaks, we recommend that you do not hard-code the AccessKey ID and AccessKey Secret in your project code.
      This example shows how to obtain credentials from the context.
    */
    $creds = $context["credentials"];
    $accessKeyId = $creds["accessKeyId"];
    $accessKeySecret = $creds["accessKeySecret"];
    $securityToken = $creds["securityToken"];
    $endpoint = "https://oss-cn-hangzhou-internal.aliyuncs.com";
    $bucket= "randombucket";
    $object = "exampledir/index.php";
    $filePath = "/code/index.php";

    try{
        $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false, $securityToken);
        $ossClient->uploadFile($bucket, $object, $filePath);
    } catch(OssException $e) {
        printf(__FUNCTION__ . ": FAILED\n");
        printf($e->getMessage() . "\n");
        return $e->getMessage();
    }
    return 'hello world';
}

L'exemple de code s'explique comme suit :

  • $creds = $context["credentials"] : récupère les identifiants temporaires depuis le paramètre $context. Cette pratique évite d'écrire en dur des informations sensibles, telles que les identifiants, directement dans votre code.

  • Le code précédent téléverse le fichier /code/index.php vers le répertoire exampledir du bucket randombucket dans OSS.

    Remarque

    Remplacez endpoint, bucket, object et filePath par les valeurs réelles de vos ressources.

Prérequis

Procédure

  1. Connectez-vous à la console Function Compute. Dans le volet de navigation de gauche, choisissez Function Management > Functions.

  2. Dans la barre de navigation supérieure, sélectionnez une région. Sur la page Functions, cliquez sur la fonction cible.

  3. Sur la page de détails de la fonction, cliquez sur l'onglet Code, saisissez l'exemple de code dans l'éditeur, puis cliquez sur Deploy.

    Remarque

    Dans cet exemple, le handler correspond à la méthode handler située dans index.php. Si le handler de votre fonction est configuré différemment, mettez à jour les noms du fichier et de la méthode afin qu'ils correspondent à votre configuration.

  4. Cliquez sur Test Function.

    Une fois la fonction exécutée, elle renvoie hello world.

Exemple 3 : Appeler des commandes externes

Votre programme PHP peut également créer un processus enfant via fork pour appeler des commandes externes.

Si votre fonction PHP nécessite des outils écrits dans d'autres langages, tels que des scripts shell ou des exécutables compilés en C++ ou en Go, incluez-les avec le code de votre fonction et téléversez-les ensemble. Vous pourrez ensuite invoquer ces outils en exécutant des commandes externes depuis votre fonction. Les méthodes courantes pour appeler des commandes externes incluent exec, system et shell_exec.

L'exemple de code suivant exécute la commande Linux ls -halt pour lister le contenu détaillé du répertoire /code.

<?php

function handler($event, $context) {
  return shell_exec("ls -halt /code");
}        

Exemple 4 : Appeler une fonction à l'aide d'un déclencheur HTTP

Exemple de code

<?php

function handler($event, $context) {
  $logger = $GLOBALS['fcLogger'];
  $logger->info('hello world');
  $logger->info('receive event: ' . $event);
  
  try {
    $evt = json_decode($event, true);
    if (is_null($evt['body'])) {
      return "The request did not come from an HTTP Trigger, event: " . $event;
    }
    $body = $evt['body'];
    if ($evt['isBase64Encoded']) {
      $body = base64_decode($evt['body']);
    }
    return array(
      "statusCode" => 200,
      'headers' => array("Content-Type" => "text/plain"),
      'isBase64Encoded' => false,
      "body" => $body
    );
  } catch (Exception $e) {
      $logger->error("Caught exception: " . $e->getMessage());
      return "The request did not come from an HTTP Trigger, event: " . $event;
  }
}

Prérequis

Vous avez créé une fonction utilisant l'environnement d'exécution PHP ainsi qu'un déclencheur HTTP. Pour plus d'informations, consultez Créer une fonction déclenchée par un événement et Configurer un déclencheur HTTP.

Procédure

  1. Connectez-vous à la console Function Compute. Dans le volet de navigation de gauche, choisissez Function Management > Functions.

  2. Dans la barre de navigation supérieure, sélectionnez une région. Sur la page Functions, cliquez sur la fonction cible.

  3. Sur la page de détails de la fonction, cliquez sur l'onglet Trigger pour obtenir l'endpoint public du déclencheur HTTP.

  4. Exécutez la commande cURL suivante pour appeler la fonction.

    curl -i "https://http-trigger-demo.cn-shanghai.fcapp.run" -d 'Hello FC!'
    Important
    • Si le Authentication Method du déclencheur HTTP est défini sur No Authentication, utilisez directement Postman ou cURL pour appeler la fonction. Pour plus d'informations, consultez Étapes.

    • Si le Authentication Method du déclencheur HTTP est Signature Authentication, JWT Authentication ou Bearer Authentication, utilisez la méthode d'authentification correspondante pour appeler la fonction. Pour plus d'informations, consultez Authentification et autorisation.

Analyse des erreurs

Cet exemple de code prend en charge les appels via un déclencheur HTTP ou un nom de domaine personnalisé. Si vous testez la fonction depuis la console avec un événement ne correspondant pas au format de requête du déclencheur HTTP, une erreur se produit.

Par exemple, si vous appelez la fonction dans la console, définissez le paramètre de requête sur "Hello, FC!" et cliquez sur Test Function, la fonction renvoie la réponse suivante :

The request did not come from an HTTP Trigger, event: Hello FC!