01. PHP 运行时

1. 装置自定义库

通过依赖管理工具,例如 composer,在本地装置依赖后同函数代码一起打包上传。

  • 依赖库同代码一起打包上传 通过依赖管理工具,例如 composer,在本地装置依赖后同函数代码一起打包上传。
  • 打包时函数入口文件须要在 zip 包的根目录下。如果打包整个文件夹并上传 zip 包,则会因解压后无奈在根目录找到入口文件而导致函数创立失败。

本文以 PHP7 装置 requests 库为例:

  1. 在本地终端中执行 mkdir test-package 命令,创立一个目录用于寄存函数代码和依赖库。
  2. test-package下创立conposer.json并指定须要装置的依赖库及版本。

    {"require": { "requests": ">=1.0"  }}
  3. 执行以下命令,在该目录下装置 requests 依赖库。

    cd test-packagecomposer install
  4. 在该目录下创立函数入口文件 index.php 并在代码中援用 requests 库。

    <?phprequire 'vendor/autoload.php';function main_handler($event, $context) {    return "hello world";}?> 
  5. 将函数代码及依赖库一起压缩为 zip 包,在 云函数控制台 中上传打包的 zip 包并创立一个新函数。操作步骤如下:

    i. 登录 云函数控制台,单击左侧导航栏的「函数服务」。

    ii. 在主界面上方抉择冀望创立函数的地区,并单击「新建」,进入函数创立流程。

    iii. 在「新建函数」页面,填写函数根本信息。如下图所示:

    • 创立形式:抉择应用「自定义创立」来新建函数。
    • 运行环境:抉择「Php7」。
    • 提交办法:抉择「本地上传zip包」。
  6. 单击「实现」即可创立函数。

2. 装置自定义扩大

在函数入口文件的同级目录下创立扩大文件夹 php_extension 并增加自定义扩大文件 .so 和配置文件 php.ini,同函数代码一起打包上传。

本文以 PHP7 装置自定义扩大 swoole.so 为例。

  1. 在本地终端中执行 mkdir test-package 命令,创立一个目录用于寄存函数代码和依赖库。
  2. 执行以下命令在 test-package 创立文件夹 php_extension,并将扩大对应的配置文件 php.ini 和扩大文件 .so 放在该目录下,目录构造如下:

    • 扩大文件夹 php_extension 和配置文件 php.ini 为固定命名,如应用其余命名可能导致扩大加载失败。
    • 扩大文件夹 php_extension 和配置文件 php.ini 以及自定义扩大 .so 文件须要具备可执行权限。
|____php_extension| |____php.ini| |____swoole.so|____index.php  
  1. 自定义扩大反对从代码中或层中加载,如果扩大以层的模式上传,请确保上传到层的 zip 解压后的目录格局如下:
|____php_extension| |____swoole.so
  1. php.ini 写法:
  • 扩大在代码目录下:

    extension=/var/user/php_extension/swoole.so
  • 扩大在层目录下:

    extension=/opt/php_extension/swoole.so
  1. 在该目录下创立函数入口文件 index.php,可通过 extension_loaded( ) 函数查看扩大是否加载胜利,加载胜利返回 true,否则返回 false
<?phpfunction main_handler($event, $context) {    var_dump(extension_loaded('swoole'));    return "hello world";}?> 
  1. 将函数代码及依赖库一起压缩为 zip 包,在 云函数控制台 中上传打包的 zip 包并创立一个新函数。操作步骤如下:

i. 登录 云函数控制台,单击左侧导航栏的「函数服务」。

ii. 在主界面上方抉择冀望创立函数的地区,并单击「新建」,进入函数创立流程。

iii. 在「新建函数」页面,填写函数根本信息。如下图所示:

  • 创立形式:抉择应用「自定义创立」来新建函数。
  • 运行环境:抉择「Php7」。
  • 提交办法:抉择「本地上传zip包」。
  1. 单击「实现」即可创立函数。

02. Java 运行时

通过依赖管理工具,例如 maven,在本地装置依赖后同函数代码一起打包上传。

  1. 在本地终端中执行 mkdir test-package 命令,创立一个目录用于寄存函数代码和依赖库。
  2. 在该目录下创立 pom.xml,并在 pom.xml 中配置依赖信息。
  3. 在我的项目文件夹根目录下执行 mvn package 命令,编译输入如下:
[INFO] Scanning for projects...[INFO][INFO] ------------------------------------------------------------------------[INFO] Building java-example 1.0-SNAPSHOT[INFO] ------------------------------------------------------------------------[INFO]...[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 1.785 s[INFO] Finished at: 2017-08-25T10:53:54+08:00[INFO] Final Memory: 17M/214M[INFO] ------------------------------------------------------------------------
  1. 将函数代码及依赖库一起压缩为 jar 包,在 云函数控制台 中上传打包的 jar 包并创立一个新函数。操作步骤如下:

    1. 登录 云函数控制台,单击左侧导航栏的「函数服务」。
    2. 在主界面上方抉择冀望创立函数的地区,并单击「新建」,进入函数创立流程。
    3. 在“新建函数”页面,填写函数根本信息。如下图所示:
    • 创立形式:抉择应用「自定义创立」来新建函数。
    • 运行环境:抉择「Java8」。
    • 提交办法:抉择「本地上传zip包」。
  2. 单击「实现」即可创立函数。

03. Go 运行时

应用办法:打包时上传最终的二进制文件。

Go 运行时的依赖库同代码一起编译后失去二进制文件,在 云函数控制台 中上传打包的二进制文件并创立一个新函数。操作步骤如下:

  1. 登录 云函数控制台,单击左侧导航栏的「函数服务」。
  2. 在主界面上方抉择冀望创立函数的地区,并单击「新建」,进入函数创立流程。
  3. 在“新建函数”页面,填写函数根本信息。如下图所示:

    • 创立形式:抉择应用「自定义创立」来新建函数。
    • 运行环境:抉择「Go1」。
    • 提交办法:抉择「本地上传zip包」。
  4. 单击「实现」即可创立函数。

One More Thing

立刻体验腾讯云 Serverless Demo,支付 Serverless 新用户礼包 腾讯云 Serverless 老手体验 。