shpasser/gae-support-lumen

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

1.2.3 2015-11-10 07:22 UTC

This package is not auto-updated.

Last update: 2024-09-14 15:52:56 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License

Google App Engine (GAE) 对 Lumen 的支持包。

当前支持的功能

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

有关 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

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

当定义了 --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 配置文件中找到。

数据库

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

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

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

仅在 local 环境中支持迁移。

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

文件系统

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

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

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

FILESYSTEM = gae

最后但同样重要的是,通过Composer引入'league/flysystem'包。

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

优化

这些优化允许应用程序减少对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,然后部署您的应用程序。