runtime/google-cloud

Google Cloud 运行时

0.1.1 2021-09-10 20:33 UTC

This package is auto-updated.

Last update: 2024-09-22 14:04:38 UTC


README

Google Cloud 运行时

如果你是 Symfony Runtime 组件的新手,请参阅下方的 "长篇大论"。

安装

此运行时层是特殊的。它包括一个 router.php 文件以启用使用 Symfony Runtime 组件。您需要安装此包以及您想要使用的运行时。

与原生或 Symfony 应用程序一起使用。

composer require runtime/google-cloud symfony/runtime

如果您想与 PSR-7 一起使用。

composer require runtime/google-cloud runtime/psr-nyholm

用法

定义环境变量 FUNCTION_SOURCE

# Default value
FUNCTION_SOURCE=index.php

请注意,Google Cloud 要求 您有一个 index.php 文件。如果您正在运行 Symfony,您可能希望定义 FUNCTION_SOURCE=public/index.php,但您仍然需要创建一个 index.php 文件。

<?php
// index.php
// This file is needed for google cloud

使用 CloudEvent

// index.php
use Google\CloudFunctions\CloudEvent;

require_once dirname(__DIR__).'/vendor/autoload_runtime.php';

return function(CloudEvent $cloudevent) {
    // Print the whole CloudEvent
    $stdout = fopen('php://stdout', 'wb');
    fwrite($stdout, $cloudevent);
};

故障排除

缓存/构建目录

请注意,Google Cloud 只会部署不在 .gitignore 中的文件。在部署之前,您需要删除 var/ 条目才能使缓存预热等操作成为可能。

定义 Symfony 环境

定义环境变量 APP_ENV=prod 以使用 Symfony 生产模式。

gcloud functions deploy helloHttp \
 --runtime php74 \
 --trigger-http \
 --allow-unauthenticated \
 --set-env-vars "FUNCTION_SOURCE=public/index.php,APP_ENV=prod"

长篇大论

本节面向刚开始使用 Symfony Runtime 组件的用户。

Symfony Runtime 组件将于 2021 年 5 月与 Symfony 5.3 一起发布。有关官方文档,请参阅此处。在主 README 中也有一个压缩版本。

每个从 Symfony 5.3 开始创建的 Symfony 应用程序都将默认使用此组件。该组件确保您的应用程序与全局状态解耦。这意味着您的应用程序非常便携。通过一些配置(或自动映射),使用 RuntimeInterface 作为 Nginx 和您的应用程序之间的 "粘合剂"。

当然,不同的事物之间有不同的 RuntimeInterface "粘合剂"。一个运行时是针对 Google Cloud 的,一个针对 Bref/AWS,一个针对 Swoole,一个针对 RoadRunner 等。重点是您的应用程序不需要关心它使用的是哪个运行时。这意味着您可以在本地使用普通 Web 服务器(如 Nginx)运行您的应用程序,并在零更改的情况下将其部署到 Google Cloud,并且仍然可以确信一切正常。

Google Cloud 运行时特别说明

由于 Google Cloud 与 "普通 Web 服务器" 非常相似,因此此运行时只包含两件事

  1. router.php,这是 Google Cloud 的一个要求。它的任务只是将请求重定向到前端控制器。它不会在本地使用。
  2. 支持 CloudEvent。如果您编写了一个期望 Google\CloudFunctions\CloudEvent 的应用程序,此运行时将自动检测并为您创建此类对象。

它将直接支持原生 PHP 应用程序和 Symfony HttpFoundation 类型应用程序。要支持 PSR-7/PSR-15 或 Laravel,还需要安装一个额外的运行时。有关更多信息,请参阅主 README