IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 一文读懂云函数 SCF 如何进行依赖安装(下) -> 正文阅读

[PHP知识库]一文读懂云函数 SCF 如何进行依赖安装(下)

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-package
    composer install
  4. 在该目录下创建函数入口文件 index.php 并在代码中引用 requests 库。

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

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

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

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

    • 创建方式:选择使用「自定义创建」来新建函数。
    • 运行环境:选择「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
<?php
function main_handler($event, $context) {
    var_dump(extension_loaded('swoole'));
    return "hello world";
}
?> 
  1. 将函数代码及依赖库一同压缩为 zip 包,在 云函数控制台 中上传打包的 zip 包并创建一个新函数。操作步骤如下:

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

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

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

  • 创建方式:选择使用「自定义创建」来新建函数。
  • 运行环境:选择「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. 在“新建函数”页面,填写函数基本信息。如下图所示: img
    • 创建方式:选择使用「自定义创建」来新建函数。
    • 运行环境:选择「Java8」。
    • 提交方法:选择「本地上传zip包」。
  2. 单击「完成」即可创建函数。

03. Go 运行时

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

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

  1. 登录 云函数控制台,单击左侧导航栏的「函数服务」。
  2. 在主界面上方选择期望创建函数的地域,并单击「新建」,进入函数创建流程。
  3. 在“新建函数”页面,填写函数基本信息。如下图所示: img
    • 创建方式:选择使用「自定义创建」来新建函数。
    • 运行环境:选择「Go1」。
    • 提交方法:选择「本地上传zip包」。
  4. 单击「完成」即可创建函数。

One More Thing

立即体验腾讯云 Serverless Demo,领取 Serverless 新用户礼包 👉 腾讯云 Serverless 新手体验

欢迎访问:Serverless 中文网

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-07-28 07:27:14  更:2021-07-28 07:29:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 2:42:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码