PHP函数开发概述
FunctionGraph目前支持以下PHP运行环境。
- PHP 7.3
- PHP 8.3
PHP函数接口定义
PHP函数的接口定义如下所示:
function handler($event, $context)
- 入口函数名($handler):入口函数名称, 需和函数执行入口处用户自定义的入口函数名称一致。
- 执行事件($event):函数执行界面由用户输入的执行事件参数, 格式为JSON对象。
- 上下文环境($context):Runtime提供的函数执行上下文,其接口定义在SDK接口说明。
- 函数执行入口: index.handler。
PHP函数的函数执行入口参数格式为:[文件名].[函数名],请参考函数执行入口通过FunctionGraph控制台进行配置或修改。
PHP的initializer入口介绍
关于函数初始化入口Initializer的具体介绍请参考函数初始化入口Initializer。
PHP函数的Initializer格式为:[文件名].[initializer名]
示例:创建函数时指定的initializer为main.my_initializer,那么FunctionGraph会去加载main.php中定义的my_initializer函数。
在函数工作流服务中使用PHP实现initializer接口,需要定义一个PHP函数作为initializer入口,一个最简单的initializer示例如下。
<?php Function my_initializer($context) { echo 'hello world' . PHP_EOL; } ?>
- 函数名
my_initializer需要与实现initializer接口时的initializer字段相对应。
示例:实现initializer接口时指定的Initializer入口为main.my_initializer,那么FunctionGraph会去加载main.php中定义的my_initializer函数。
- context参数
context参数中包含一些函数的运行时信息,例如:request id、临时AccessKey、function meta等。
SDK接口
Context类中提供了许多上下文方法供用户使用,其声明和功能如所示。
方法名 |
方法说明 |
---|---|
getRequestID() |
获取请求ID。 |
getRemainingTimeInMilliSeconds () |
获取函数剩余运行时间。 |
getAccessKey() |
获取用户委托的AccessKey(有效期24小时),使用该方法需要为函数配置委托。 当前函数工作流已停止维护Runtime SDK 中getAccessKey接口,您将无法使用getAccessKey获取临时AK。 |
getSecretKey() |
获取用户委托的SecretKey(有效期24小时),使用该方法需要为函数配置委托。 当前函数工作流已停止维护Runtime SDK 中getSecretKey接口,您将无法使用getSecretKey获取临时SK。 |
getSecurityAccessKey() |
获取用户委托的SecurityAccessKey(有效期24小时),缓存时间为10分钟,即10分钟内再次获取的返回内容相同,使用该方法需要为函数配置委托。 |
getSecuritySecretKey() |
获取用户委托的SecuritySecretKey(有效期24小时),缓存时间为10分钟,即10分钟内再次获取的返回内容相同,使用该方法需要为函数配置委托。 |
getSecurityToken() |
获取用户委托的SecurityToken(有效期24小时),缓存时间为10分钟,即10分钟内再次获取的返回内容相同,使用该方法需要为函数配置委托。 |
getUserData(string key) |
通过key获取用户通过环境变量传入的值。 |
getFunctionName() |
获取函数名称。 |
getRunningTimeInSeconds () |
获取函数超时时间。 |
getVersion() |
获取函数的版本。 |
getMemorySize() |
分配的内存。 |
getCPUNumber() |
获取函数占用的CPU资源。 |
getPackage() |
获取函数组。 |
getToken() |
获取用户委托的token(有效期24小时),使用该方法需要为函数配置委托。 |
getLogger() |
获取context提供的logger方法,返回一个日志输出类,通过使用其info方法按“时间-请求ID-输出内容”的格式输出日志。 如调用info方法输出日志: logg = context.getLogger()$ $logg->info("hello") |
getAlias() |
获取函数的别名 |