a1comms/gae-support-lumen

此包已被弃用,不再维护。作者建议使用 affordablemobiles/g-serverless-support-laravel 包代替。

为 Lumen 应用提供 Google App Engine & Local SDK 支持。

5.1.1 2016-07-25 10:00 UTC

This package is not auto-updated.

Last update: 2024-05-01 14:39:52 UTC


README

本地 SDK 支持

此包已从 shpasser 版本修改,以更好地兼容使用本地 GAE SDK 的工作人员。

Latest Stable Version Total Downloads Latest Unstable Version License

为 Lumen 提供的 Google App Engine (GAE) 支持包。

当前支持的功能

  • 生成通用配置文件,
  • 邮件服务提供商,
  • 队列服务提供商,
  • 数据库连接,
  • 文件系统。

有关 Laravel 5 的信息,请参阅 https://github.com/shpasser/GaeSupportL5

安装

使用 Composer 引入 'shpasser/gae-support-lumen' 和 'illuminate/mail' 包。

"require": {
    "shpasser/gae-support-lumen": "~1.0",
    "illuminate/mail": "~5.0"
}

bootstrap/app.php

  • 取消以下行的注释以使用 Facades
$app->withFacades();
  • 包含服务提供者
$app->register(Shpasser\GaeSupportLumen\GaeSupportServiceProvider::class);

使用

生成与 GAE 相关的文件/条目。

php artisan gae:setup --config --bucket="your-bucket-id" --db-socket="cloud-sql-instance-socket-connection-string" --db-name="cloud-sql-database-name" --db-host="cloud-sql-instance-ipv4-address" your-app-id

除非使用 --bucket 选项定义了自定义存储桶 ID,否则默认配置了 GCS 存储桶。

当定义了 --db-name 选项时,至少应定义 --db-socket--db-host 之一。

邮件

邮件驱动程序配置可以在 config/mail.php.env.production 中找到,这些配置文件由 artisan 命令修改/生成。无需任何自定义配置。所有发出的邮件消息都使用应用程序管理员的发送地址发送,即 admin@your-app-id.appspotmail.com。支持电子邮件消息的 sendertoccbccreplyTosubjectbodyattachment 部分。

队列

修改后的队列配置文件 config/queue.php 应包含

return array(

	...

	/*
	|--------------------------------------------------------------------------
	| GAE Queue Connection
	|--------------------------------------------------------------------------
	|
	*/

	'connections' => array(

		'gae' => array(
			'driver'	=> 'gae',
			'queue'		=> 'default',
			'url'		=> '/tasks',
			'encrypt'	=> true,
		),

		...

	),

);

默认使用 'default' 队列和加密。为了使用队列,您的 app/Http/routes.php 文件应包含以下路由

Route::post('tasks', array('as' => 'tasks',
function()
{
	return Queue::marshal();
}));

此路由将由 GAE 队列用于推送作业。请注意,路由和 GAE 队列连接的 'url' 参数指向相同的 URL。有关更多信息,请参阅 https://laravel.net.cn/docs/master/queues#push-queues

缓存、会话和日志

通过使用特定的驱动程序/处理程序支持缓存、会话和日志组件

  • 缓存 - 使用 'memcached' 驱动程序,
  • 会话 - 使用 'memcached' 驱动程序,
  • 日志 - 使用 'syslog' 处理程序。

提到的驱动程序/处理程序的配置选项由 artisan 命令生成,并可在 .env.production 配置文件中找到。

数据库

Google Cloud SQL 通过 Laravel 的 MySql 驱动器得到支持。连接配置由 artisan 命令添加到 config/database.php 文件中的 cloudsql 部分。可以通过 artisan 命令使用 --db-socket--db-name--db-host 选项来配置连接参数。

与数据库相关的环境变量设置在 .env.production.env.local 文件中。

生产环境配置为使用套接字连接,而本地环境配置为通过 Google Cloud SQL 实例的 IPv4 地址进行连接。使用 Google 开发者控制台获取套接字连接字符串并启用数据库实例的 IPv4 地址。

仅当在 local 环境中工作时才支持迁移。

要使用 productionlocal 环境,将相应的文件重命名为 .env

文件系统

为了支持 Laravel 文件系统在 GAE 上,artisan 命令修改 config/filesystem.php 文件以包含额外的磁盘

'gae' => [
    'driver' => 'gae',
    'root'   => storage_path().'/app',
],

并在 .env.production 文件中添加以下行

FILESYSTEM = gae

最后但并非最不重要的是,通过 Composer 引入 'league/flysystem' 包。

"require": {
    "league/flysystem": "~1.0"
}

优化

优化允许应用程序减少对 GCS 的使用,GCS 是目前 GAE 平台上唯一可用的读写存储。

为了优化视图编译,可以使用包含的 cachefs 文件系统,使用 memcached 服务存储编译后的视图。cachefs 不为应用程序提供可靠的存储解决方案,使用 memcached 存储的信息根据 memcached 规则进行管理,并且可能在 memcached 决定时被删除。由于视图可以在不丢失任何信息的情况下重新编译,因此使用 cachefs 存储编译后的视图是合适的。

cachefs 具有以下结构

/
+-- framework
    +-- views

/framework/views 用于存储编译后的视图。

使用以下选项在 .env.production 文件中启用此功能

COMPILED_PATH = cachefs://framework/views

此外,可以跳过 GSC 存储桶的初始化以提高性能

env_variables:
        GAE_SKIP_GCS_INIT: true

存储路径将被设置为 GCS 存储桶的 /storage 目录,并且将跳过存储目录结构的创建。

如果没有使用,可以删除文件系统初始化以最小化 GCS 使用。为此,从 .env.production 文件中删除以下行

FILESYSTEM = gae

部署

如果需要,备份现有的 .env 文件,并在部署您的应用程序之前将生成的 .env.production 重命名为 .env

下载并安装 PHP 的 GAE SDK,然后部署您的应用程序。