tomwalder / polyfill-appengine-google-cloud-tasks
允许简单的使用旧的Google App Engine原生PushTask和PushQueue在Cloud Run或其他使用Google Cloud Tasks API的环境下工作
Requires
- php: >=5.5.0
- ext-bcmath: *
- google/cloud-tasks: ^v1.8
Suggests
- ext-grpc: Enables use of gRPC, a universal high-performance RPC framework created by Google.
- ext-protobuf: Provides a significant increase in throughput over the pure PHP protobuf implementation. See https://cloud.google.com/php/grpc for installation instructions.
This package is auto-updated.
Last update: 2024-08-26 23:12:09 UTC
README
我知道标题很炫。
如果您正在AppEngine PHP 5.5运行时执行此操作
use google\appengine\api\taskqueue\PushTask; use google\appengine\api\taskqueue\PushQueue; $task1 = new PushTask('/someUrl'); $task2 = new PushTask('/someOtherUrl'); $queue = new PushQueue(); $queue->addTasks([$task1, $task2]);
或者...
use google\appengine\api\taskqueue\PushTask; $task1 = new PushTask('/someUrl'); $task1->add();
那么这个库将允许该代码在AppEngine之外工作,提供对新Google Cloud Tasks API的polyfill。
这是升级到PHP 7标准运行时、灵活运行时——或者更好的是Cloud Run的垫脚石。
安装 & 设置
使用Composer引入库
composer require tomwalder/polyfill-appengine-google-cloud-tasks
您需要配置您的Cloud Tasks队列所在的(区域)。通常在启动代码中执行一次即可。
CloudTasksQueue::initLocation('europe-west2');
身份验证
您的应用程序需要凭证来调用Google Cloud Tasks API。这通常使用默认凭证,来自GCP实例等自动处理。
如果您需要手动指定路径,可以这样做...
putenv('GOOGLE_APPLICATION_CREDENTIALS=/path/to/my/credentials.json');
或者,您可以按照以下方式配置并注入自己的Google\Cloud\Tasks\V2\CloudTasksClient
。有关认证信息,请参阅Google客户端认证。
$obj_client = new CloudTasksClient([ 'keyFilePath' => '/path/to/keyfile.json' ]); CloudTasksQueue::initClient($obj_client);
绝对任务URL(Cloud Run)
如果您在Cloud Run或GCP实例(即AppEngine之外)上使用此库,HTTP推送任务URL不再相对。
因此,您需要设置基本HTTP目标——所有相对任务URL都将附加到该目标。
CloudTasksQueue::initHttpTarget('https://my-awesome-project-hvdgury43f-ew.a.run.app');
用法
基本上,您可以使用原始的Google PushTask
和PushQueue
类来做很多事情。请参阅上面的示例。
更多信息
批量添加
Google Cloud Tasks不支持批量添加,因此polyfill会逐个添加任务。
您可能会注意到一些延迟增加。在罕见的情况下,您可能会在任务入队过程中收到错误。这将导致一些任务被创建,但不是所有任务。
手动指定项目ID
您可以按照以下方式手动指定Google项目ID(我们尝试从凭证中提取)
CloudTasksQueue::initProject('my-awesome-project');
性能
强烈建议使用gRPC
和Protobuf
扩展来从所有Google API中获得最佳性能。
默认为REST
,除非上述可用。Google Auth堆栈自动检测。
这些扩展在Google App Engine PHP 7运行时中可用,并在php.ini中启用
强制队列
如果您想使用新的队列名称而不用担心自己创建队列,可以按照以下方式启用
CloudTasksQueue::ensureQueues(true);
这将检查在插入任务之前队列是否存在,并尝试创建它。
这可能会增加延迟,并且可能不适合生产环境使用。
外部链接
致谢
本代码的部分内容借鉴自:https://github.com/GoogleCloudPlatform/appengine-php-sdk