更新时间:2025-07-18 GMT+08:00
分享

开发PHP事件函数

PHP的事件函数开发,支持本地开发后上传代码文件,也支持直接在FunctionGraph控制台创建函数在线编辑PHP函数代码。

关于PHP函数的接口定义以及SDK接口说明请参考PHP函数开发概述

约束与限制

  • 函数仅支持返回如下几种类型的值。
    • Null:函数返回的HTTP响应Body为空。
    • string:函数返回的HTTP响应Body内容为该字符串内容。
    • 其他:函数会返回值作为对象进行json编码,并将编码后的内容作为HTTP响应的Body,同时设置响应的“Content-Type”头为“text/plain”。
  • 当函数的事件源是APIG时,相关约束条件请参考Base64解码和返回结构体的说明
  • 本例函数工程文件保存在“~/Code/”文件夹下,在打包的时候务必进入Code文件夹下选中所有工程文件进行打包,这样做的目的:由于定义了FunctionGraph函数的index.php是程序执行入口,确保fss_examples_php7.3.zip解压后,index.php文件位于根目录。

开发PHP函数

  1. 创建函数

    1. 编写打印helloworld的代码。

      打开文本编辑器,编写helloworld函数,代码如下,文件命名为“helloworld.php”,保存文件。

      1
      2
      3
      4
      <?php
      function printhello() {
      echo 'Hello world!';
      }
      
    2. 定义FunctionGraph函数

      打开文本编辑,定义函数,代码如下,文件命名为index.php,保存文件(与helloworld.php保存在同一文件夹下)。

      1
      2
      3
      4
      5
      6
      7
      8
      <?php
      include_once 'helloworld.php';
       
      function handler($event, $context) {
          $output = json_encode($event);
          printhello();
          return $output;
      }
      

  2. 工程打包

    函数工程创建以后,可以得到以下目录,选中工程所有文件,打包命名为“fss_examples_php7.3.zip”,如图1所示。
    图1 工程打包

  3. 创建FunctionGraph函数,上传程序包

    登录FunctionGraph,创建PHP函数,上传fss_examples_php7.3.zip文件。如 图2所示。
    图2 上传程序包
    • 函数执行入口中的index与步骤定义FunctionGraph函数的文件名保持一致,通过该名称找到FunctionGraph函数所在文件。
    • 函数执行入口中的handler为函数名,与步骤定义FunctionGraph函数中创建的index.php文件中的函数名保持一致。

    函数执行过程为:用户上传fss_examples_php7.3.zip保存在OBS中,触发函数后,解压缩zip文件,通过index匹配到FunctionGraph函数所在文件,通过handler匹配到index.php文件中定义的FunctionGraph函数,找到程序执行入口,执行函数。

    修改函数执行入口:

    在FunctionGraph控制台左侧导航栏选择“函数 > 函数列表”,单击需要设置的“函数名称”进入函数详情页,选择“设置 > 常规设置”,配置“函数执行入口”参数,如图3所示。
    图3 函数执行入口

  4. 测试函数

    1. 创建测试事件。
      在函数详情页,单击“配置测试事件”,弹出“配置测试事件”页,输入测试信息如图4所示,单击“创建”。
      图4 配置测试事件
    2. 在函数详情页,选择已配置测试事件,单击“测试”。

  5. 执行函数

    函数执行结果分为三部分,分别为函数返回(由return返回)、执行摘要、日志输出(由echo方法获取的日志方法输出)。

执行结果

执行结果由3部分组成:函数返回、执行摘要和日志。

表1 执行结果说明

参数项

执行成功

执行失败

函数返回

返回函数中定义的返回信息。

返回包含错误信息、错误类型和堆栈异常报错信息的JSON文件。格式如下:

{
    "errorMessage": "",
    "errorType": "",
    "stackTrace": {}
}

errorMessage:Runtime返回的错误信息

errorType:错误类型

stackTrace:Runtime返回的堆栈异常报错信息

执行摘要

显示请求ID、配置内存、执行时长、实际使用内存和收费时长。

显示请求ID、配置内存、执行时长、实际使用内存和收费时长。

日志

打印函数日志,最多显示4KB的日志。

打印报错信息,最多显示4KB的日志。

相关文档