日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

函數(shù)實例生命周期回調方法

本文介紹PHP如何實現(xiàn)并應用函數(shù)實例生命周期回調方法。

背景信息

當您實現(xiàn)并配置函數(shù)實例生命周期回調后,函數(shù)計算將在相關實例生命周期事件發(fā)生時調用對應的回調程序。當前PHP運行時支持Initializer和PreStop兩種函數(shù)實例生命周期回調函數(shù)。更多信息,請參見配置實例生命周期。

函數(shù)實例生命周期回調程序與正常調用請求計費規(guī)則一致,但其執(zhí)行日志只能在函數(shù)日志、實時日志高級日志中查詢,調用請求列表不會展示回調程序日志。具體操作,請參見查看實例生命周期回調函數(shù)日志

Initializer回調

Initializer示例

初始化回調程序(Initializer回調)在函數(shù)實例啟動成功之后,運行請求處理程序(Handler)之前執(zhí)行。函數(shù)計算保證在一個實例生命周期內,成功且最多成功執(zhí)行一次Initializer回調。例如,您的Initializer回調第一次執(zhí)行失敗后系統(tǒng)會重試,直到成功為止,然后再執(zhí)行您的請求處理程序。因此,您在實現(xiàn)Initializer回調時,需要保證其被重復調用時的正確性。

Initializer回調只有一個$context輸入?yún)?shù),使用方法和事件請求處理程序一樣。

一個最簡單的Initializer回調如下所示。

<?php
function my_initializer($context) {
    $logger = $GLOBALS['fcLogger'];
    $logger->info("hello world");
}
?>            

my_initializer是Initializer回調方法名,需要與您在函數(shù)計算控制臺配置的Initializer 回調程序相對應。例如,您為函數(shù)配置的Initializer 回調程序main.my_initializer,那么函數(shù)計算在配置Initializer屬性后會去加載main.php中定義的my_initializer方法。

方法簽名

  • 輸入?yún)?shù)只有context,包含的信息和事件請求處理程序(handler)的context保持一致。

  • contextinitializerinitializationTimeout兩個信息是為Initializer回調設計,如果使用Initializer功能,會被分別設置為您為函數(shù)配置的Initializer 回調程序Initializer 回調超時時間的值,否則為空,且不生效。

  • 無返回值。

PreStop回調

預停止回調程序(PreStop回調)在函數(shù)實例銷毀前執(zhí)行,方法簽名同Initializer回調。

如下是preStop回調的具體示例。

<?php

$counter = 0;
function preStop($context) {
    $GLOBALS['fcLogger']->info("preStop ok");
}

function handler($event, $context) {
    global $counter;
    $counter += 2;
    return $counter;
}
?>

您可以在您為函數(shù)開通的LogStore中查詢到PreStop函數(shù)的日志。比如使用如下格式的語句查詢該函數(shù)所有日志。更多信息,請參見查詢回調函數(shù)相關日志

<funcName> AND <ServiceName> AND qualifier: <VERSION>

配置生命周期回調函數(shù)

通過控制臺配置

您可以在函數(shù)計算控制臺FC函數(shù)配置中,配置Initializer 回調程序PreStop 回調程序。具體操作步驟,請參見配置實例生命周期?;卣{格式為[文件名.方法名],例如:

  • Initializer 回調程序設置為index.initialize,表示index.php文件中的initialize方法。

  • PreStop 回調程序設置為index.preStop,表示index.php文件中的preStop方法。

db-php-lifecycle

通過Serverless Devs工具配置

如果使用Serverless Devs工具,需要在s.yaml配置文件中添加Initializer 回調程序PreStop 回調程序。

  • Initializer回調配置

    function配置下添加instanceLifecycleConfig.initializer字段,包括handlertimeout兩個字段。

  • PreStop回調配置

    function配置下添加instanceLifecycleConfig.preStop字段,包括handlertimeout兩個字段。

具體的示例如下所示。

edition: 3.0.0
name: fcDeployApp
access: "default"

vars: # 全局變量
  region: "cn-hangzhou"

resources:
  hello_world:
    component: fc3 # 組件名稱
    props:
      region: ${vars.region}              # 關于變量的使用方法,可以參考:https://docs.serverless-devs.com/serverless-devs/yaml#%E5%8F%98%E9%87%8F%E8%B5%8B%E5%80%BC
      functionName: "testphp"
      description: 'this is a test'
      runtime: "php7.2"
      code: ./
      handler: index.handler
      memorySize: 128
      timeout: 30
      instanceLifecycleConfig:      # 擴展函數(shù)
        initializer:                # initializer函數(shù)
          handler: index.my_initializer 
          timeout: 60     
        preStop:                    # PreStop函數(shù)
          handler: index.preStop    # 函數(shù)入口
          timeout: 60               # 超時時間
 

關于Serverless Devs的YAML配置規(guī)范,請參見Serverless Devs常用命令

查看實例生命周期回調函數(shù)日志

您可以通過函數(shù)日志功能查看回調函數(shù)日志。

  1. 登錄函數(shù)計算控制臺,在左側導航欄,單擊函數(shù)。

  2. 在頂部菜單欄,選擇地域,然后在函數(shù)頁面,單擊目標函數(shù)。

  3. 在函數(shù)詳情頁面,選擇測試頁簽,單擊測試函數(shù),然后選擇日志 > 函數(shù)日志

    函數(shù)日志頁簽,您可以查看函數(shù)的調用日志和Initializer回調日志,示例如下。

    2024-03-04 17:57:28FC Initialize Start RequestId: 1-65e59b07-1520da26-bf73bbb91b69
    2024-03-04 17:57:282024-03-04 09:57:28.192 1-65e59b07-1520da26-bf73bbb91b69 [info] initializer
    2024-03-04 17:57:28FC Initialize End RequestId: 1-65e59b07-1520da26-bf73bbb91b69
    2024-03-04 17:57:28FC Invoke Start RequestId: 1-65e59b07-1520da26-bf73bbb91b69
    2024-03-04 17:57:28FC Invoke End RequestId: 1-65e59b07-1520da26-bf73bbb91b69

    因為每個函數(shù)實例會緩存一段時間,不會馬上銷毀,因此不能立即查看PreStop回調日志。如需快速觸發(fā)PreStop回調,可更新函數(shù)配置或者函數(shù)代碼。更新完成后,再次查看函數(shù)日志,您可以查看PreStop回調日志。示例如下。

    2024-03-04 18:33:26FC PreStop Start RequestId: 93c93603-9fbe-4576-9458-193c8b213031
    2024-03-04 18:33:262024-03-04 10:33:26.077 93c93603-9fbe-4576-9458-193c8b213031 [info] preStop
    2024-03-04 18:33:26FC PreStop End RequestId: 93c93603-9fbe-4576-9458-193c8b213031

示例程序

函數(shù)計算為您提供了使用Initializer回調和PreStop回調的MySQL示例程序。在本示例中,Initializer回調函數(shù)用于從環(huán)境變量中獲取MySQL數(shù)據(jù)庫配置,創(chuàng)建MySQL連接并測試連通性,PreStop回調函數(shù)負責關閉MySQL連接。詳細信息,請參見php72-mysql