上云无忧 > 文档中心 > 百度智能云函数计算 CFC PHP 示例
函数计算CFC
百度智能云函数计算 CFC PHP 示例

文档简介:
以下为一个最基本的hello world函数入口示例: 在创建CFC云函数时,需要指定执行方法。 普通方式:handler需要与创建函数时的 "handler" 字段相对应。例如,创建函数时指定的 "handler" 为 index.handler,函数计算则会加载 index.php 文件中定义的 handler 函数。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

函数代码

以下为一个最基本的hello world函数入口示例:

<?php function handler($event, $context) { var_dump($event); return "hello world!"; }

函数入口

在创建CFC云函数时,需要指定执行方法。

  • 普通方式:handler需要与创建函数时的 "handler" 字段相对应。例如,创建函数时指定的 "handler" 为 index.handler,函数计算则会加载 index.php 文件中定义的 handler 函数。
  • ZIP包上传:当使用本地上传.ZIP包或从BOS上传.ZIP等方法提交代码ZIP包时,ZIP包的根目录下需要包含指定的入口文件,入口文件中定义入口函数,且文件名和函数名要与执行入口函数名保持一致,否则会无法找到入口文件和入口函数而报错。

输入

PHP 环境下的入参包括 $event 、$context。

$event:使用此参数传递触发事件数据。

$context:使用此参数向您的处理程序传递运行时信息。

输出

在处理函数中您可以使用return来返回值,函数不同调用方式,对返回值的处理方式不同。

同步调用(RequestResponse): 使用同步调用时,结果会以序列化的JSON格式返回, 调用方可以根据返回值进行后续处理。 异步调用(Event): 异步调用时,调用方法触发函数后立即返回,所以,函数返回值会被丢弃。

日志

您可以在程序中使用如下语句来完成日志输出:

  • print_r()
  • var_dump()

输出内容您可以在函数日志中查看。

错误处理

PHP 函数在执行过程中发生异常时,函数计算捕获异常并返回异常信息。以下示例代码返回了 panic 的异常信息:

<?php function handler($event, $context) { throw new Exception("panic"); }

根据以上示例代码,您调用函数时可能收到如下响应信息:

panic
Stack Trace:
#0 [internal function]: handler(Array, Array)
#1 phar:///var/runtime/script/php7-runtime.phar/src/CfcClient.php(89): ReflectionFunction->invoke(Array, Array)
#2 phar:///var/runtime/script/php7-runtime.phar/src/CfcClient.php(46): BaiduBce\CFC\CfcClient->do_invoke(Array)
#3 phar:///var/runtime/script/php7-runtime.phar/bin/php7-runtime(29): BaiduBce\CFC\CfcClient->wait_invoke()
#4 /var/runtime/script/php7-runtime.phar(12): require('phar:///var/run...')
#5 {main}

已安装扩展

如下列出目前已安装的 PHP 扩展供参考:

  • Core
  • ate
  • ibxml
  • penssl
  • cre
  • qlite3
  • lib
  • alendar
  • type
  • url
  • dom
  • hash
  • fileinfo
  • filter
  • ftp
  • gettext
  • SPL
  • iconv
  • json
  • mbstring
  • session
  • pcntl
  • PDO
  • standard
  • pdo_sqlite
  • Phar
  • readline
  • Reflection
  • mysqlnd
  • shmop
  • SimpleXML
  • sockets
  • pdo_mysql
  • exif
  • sysvmsg
  • sysvsem
  • sysvshm
  • tokenizer
  • xml
  • xmlreader
  • xmlwriter
  • zip
  • mysqli
  • redis
  • imagick
  • Zend OPcache

您也可以随时在函数中通过 print_r(get_loaded_extensions()); 代码打印查看已安装的扩展。

代码打包

用户可以将生成的二进制执行文件打包到zip文件中,并上传zip包即可。具体步骤可以参考创建部署程序包。

下面以一个简单的hello world功能为例。

  1. 创建printhello函数的代码文件。

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

<?php function printhello() { var_dump('Hello world!'); }
  1. 创建handler函数的代码文件。

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

<?php include_once 'helloworld.php'; function handler($event, $context) 
{ $output = json_encode($event); printhello(); return $output; }

  1. 打包代码。

函数的代码文件创建以后,可以在目录下看到helloworld.php和index.php两个文件。选中这两个文件,打包命名为helloworld.zip,在【函数代码】页面点击【上传函数.ZIP包】上传。

  1. 测试函数

在【函数代码】页面点击【测试】,新对话框中事件模板保持默认的"HelloWorld模板",然后点击执行。 

在对话框下方将显示如下运行日志: 

相似文档
  • 目前CFC支持的Node.js开发语言包括如下版本: Node.js 12.2 Node.js 10.15 Node.js 8.5(已下线,目前存量Node.js 8.5函数仍可运行,但无法创建该运行时的新CFC函数) 函数代码 一个简单的Node.js函数示例代码如下所示: exports.handler = (event, context, callback) => { callback(null, "Hello world!"); };
  • BCE SAM是用来定义百度函数计算CFC无服务器应用架构的模型,为本地开发工具bce-sam-cli提供指引。BCE SAM定义了一组对象,这些对象可以包含在模板定义文件中,以便轻松地描述CFC函数。
  • BSAM CLI是一个基于BCE SAM规范的命令行工具,它提供了本地开发环境,帮助您在把函数上传到百度智能云CFC之前,在本地进行函数的开发、分析和执行。
  • “部署程序包”是 CFC 运行您的函数时需要的 zip 压缩包,在创建函数时需要指定部署程序包。您可以在 CFC 的控制台编写代码或者自行创建 zip 程序压缩包。
  • Baidu Serverless VSCode Extension 是百度云 Serverless 产品 CFC 的 VSCode 插件,该插件结合了 CFC 本地命令行工具 BSAM CLI,可以帮您快速创建、管理本地的 CFC 函数,同时借助 Docker 轻松实现函数在本地的执行和 Debug。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部