Tüm Ürünler
Search
Belge Merkezi

Function Compute:Örnek yaşam döngüsü kancaları

Son Güncelleme:Oct 08, 2026

Bu konu, bir PHP çalışma zamanında örnek yaşam döngüsü kancalarının nasıl uygulanıp kullanılacağını açıklar.

Arka plan

Bir örnek yaşam döngüsü kancası uygulayıp yapılandırdığınızda, Function Compute belirli bir yaşam döngüsü olayı gerçekleştiğinde ilgili kancayı çağırır. PHP çalışma zamanı Başlatıcı ve PreStop olmak üzere iki örnek yaşam döngüsü kancasını destekler. Daha fazla bilgi için bkz. Örnek yaşam döngülerini yapılandırma.

Bir örnek yaşam döngüsü kancası için faturalama kuralları, normal bir istek çağrısı için geçerli olanlarla aynıdır. Ancak bu kancaların çalıştırma günlüklerini yalnızca Real-time Logs, Function Logs veya Advanced Logs içinde sorgulayabilirsiniz. invocation request list bu kancalara ait günlükleri göstermez. Daha fazla bilgi için bkz. Örnek yaşam döngüsü kancası günlüklerini görüntüleme.

Başlatıcı kancası

Başlatıcı örneği

Başlatıcı kancası, bir işlev örneği başladıktan sonra ancak işleyicisi yürütülmeden önce çalışır. Function Compute bir işlev örneğinin yaşam döngüsü boyunca Başlatıcı kancasının en fazla bir kez başarıyla yürütülmesini sağlar. Başlatıcı kancası ilk denemede başarısız olursa işlev çağrısı hemen başarısız olur. Bir sonraki çağrıda yeni bir işlev örneği oluşturulur ve kanca tekrar çalışır.

Not

Bir Başlatıcı kancası zaman aşımına uğradığında veya başarısız olduğunda sunucu her zaman HTTP 200 durum kodu döndürür. Hatanın bir başlatma hatasından kaynaklanıp kaynaklanmadığını belirlemek için X-Fc-Error-Type:InitializationError yanıt üst bilgisini veya yanıt gövdesindeki errorMessage alanını kontrol etmeniz gerekir.

Başlatıcı kancası, bir işleyici içindeki bağlam parametresiyle aynı olan tek bir giriş parametresi $context kabul eder.

Aşağıda temel bir Başlatıcı kancası örneği verilmiştir.

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

my_initializer Başlatıcı kancası yönteminin adıdır. Bu ad, Function Compute konsolu içinde Initializer Hook için ayarladığınız değerle eşleşmelidir. Örneğin, işleviniz için Initializer Hook nu main.my_initializer olarak yapılandırırsanız Function Compute, main.php dosyasında tanımlanan my_initializer yöntemini yükler ve çalıştırır.

Yöntem imzası

  • Kanca, işleyicinin context nesnesiyle aynı olan tek bir giriş parametresi (context) kabul eder.

  • context nesnesi içindeki initializer ve initializationTimeout alanları Başlatıcı kancası için tasarlanmıştır. Başlatıcı özelliğini kullanırsanız bu alanlar, işlev için yapılandırdığınız Initializer Hook ve Initializer Hook Timeout Period değerlerine ayarlanır. Aksi takdirde bu alanlar boş kalır ve yoksayılır.

  • Kancanın dönüş değeri yoktur.

PreStop kancası

PreStop kancası, bir işlev örneği yok edilmeden önce çalışır. Yöntem imzası Başlatıcı kancasıyla aynıdır.

Aşağıda bir PreStop kancası örneği verilmiştir.

<?php

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

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

PreStop kancasına ait günlükleri, işleviniz için yapılandırılan Logstore içinde sorgulayabilirsiniz. Örneğin, işleve ait tüm günlükleri bulmak için aşağıdaki sorgu ifadesini kullanın. Daha fazla bilgi için bkz. Kancalarla ilgili günlükleri sorgulama.

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

Yaşam döngüsü kancalarını yapılandırma

Konsolda yapılandırma

Function Compute konsolu nda bir FC işlevi için Initializer Hook ve PreStop Hook nı Configuration > Instance Configuration bölümünde yapılandırabilirsiniz. Daha fazla bilgi için bkz. Örnek yaşam döngüsünü yapılandırma. Geri arama biçimi [dosya_adı.yöntem_adı] şeklindedir. Örnekler:

  • index.php dosyasındaki initialize yöntemini çağırmak için Initializer Hook nı index.initialize olarak ayarlayın.

  • index.php dosyasındaki preStop yöntemini çağırmak için PreStop Hook nı index.preStop olarak ayarlayın.

Serverless Devs kullanarak yapılandırma

Serverless Devs kullanıyorsanız Initializer Hook ve PreStop Hook yapılandırmalarını s.yaml dosyanıza ekleyin.

  • Başlatıcı kancası yapılandırması

    function yapılandırmasına, handler ve timeout alanlarını içeren instanceLifecycleConfig.initializer alanını ekleyin.

  • PreStop kancası yapılandırması

    function yapılandırmasına, handler ve timeout alanlarını içeren instanceLifecycleConfig.preStop alanını ekleyin.

Aşağıdaki kod bir yapılandırma örneği sunar.

edition: 3.0.0
name: fcDeployApp
access: "default"

vars: # Global variables
  region: "cn-hangzhou"

resources:
  hello_world:
    component: fc3 # Component name
    props:
      region: ${vars.region}              # For more information about how to use variables, see: 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:      # Instance lifecycle hooks
        initializer:                # Initializer hook
          handler: index.my_initializer 
          timeout: 60     
        preStop:                    # PreStop hook
          handler: index.preStop    # Function handler
          timeout: 60               # Timeout
 

Serverless Devs için YAML yapılandırma belirtimleri hakkında daha fazla bilgi için bkz. Serverless Devs genel komutları.

Örnek yaşam döngüsü kancalarının günlüklerini görüntüleme

Yaşam döngüsü kancası günlüklerini Logs içinde görüntüleyebilirsiniz.

  1. Function Compute konsolu na oturum açın. Sol gezinme bölmesinde Function Management > Functions seçeneğini belirleyin.

  2. Üst gezinme çubuğunda bir bölge seçin. Functions sayfasında hedef işleve tıklayın.

  3. İşlev ayrıntıları sayfasında Test Function sekmesine tıklayın, Test Function düğmesine tıklayın ve ardından Logs > Function Logs seçeneğini belirleyin.

    Logs sekmesinde işlev çağrı günlüklerini ve Başlatıcı günlüklerini görüntüleyebilirsiniz. Örnek:

    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

    Her işlev örneği bir süre önbelleğe alınır ve hemen yok edilmez; bu nedenle PreStop kancası günlüklerini hemen görüntüleyemezsiniz. Bir PreStop kancasını hızlıca tetiklemek için işlev yapılandırmalarını veya işlev kodunu güncelleyebilirsiniz. Güncelleme tamamlandıktan sonra PreStop kancası günlüklerini Function Logs içinde görüntüleyebilirsiniz. Aşağıdaki örnek kod bir durumu gösterir:

    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

Örnek program

Function Compute, Başlatıcı ve PreStop kancalarını kullanan bir MySQL örnek projesi sağlar. Bu örnekte Başlatıcı kancası MySQL veritabanı yapılandırmasını ortam değişkenlerinden okur, bir MySQL bağlantısı oluşturur ve bağlantısını test eder. PreStop kancası ise MySQL bağlantısını kapatır. Daha fazla bilgi için bkz. php72-mysql.