google/cloud-spanner

PHP版云Spanner客户端

v1.84.0 2024-08-19 16:20 UTC

README

用于 Cloud Spanner 的PHP客户端。

Latest Stable Version Packagist

注意: 此存储库是 Google Cloud PHP 的一部分。任何支持请求、错误报告或开发贡献应直接提交给该项目。

一个完全托管、关键任务的关系型数据库服务,提供全局规模的事务一致性、模式、SQL(ANSI 2011及扩展)和自动、同步复制以提高可用性。

安装

首先,安装PHP首选依赖关系管理器 Composer

现在安装此组件

$ composer require google/cloud-spanner

此组件需要gRPC扩展。请参阅我们的 gRPC安装指南 获取有关配置扩展的更多信息。

身份验证

请参阅我们的 身份验证指南 获取有关身份验证客户端的更多信息。一旦认证完成,您就可以开始发送请求。

示例

require 'vendor/autoload.php';

use Google\Cloud\Spanner\SpannerClient;

$spanner = new SpannerClient();

$db = $spanner->connect('my-instance', 'my-database');

$userQuery = $db->execute('SELECT * FROM Users WHERE id = @id', [
    'parameters' => [
        'id' => $userId
    ]
]);

$user = $userQuery->rows()->current();

echo 'Hello ' . $user['firstName'];

会话预热

要对Spanner服务发出查询,客户端库需要在服务器幕后请求一个会话ID。此API调用将显著增加您程序的延迟。Spanner客户端库通过提供一个缓存的会话池来提供一种方便的方式来减轻这个问题。

更多详细信息,请参阅: https://github.com/googleapis/google-cloud-php/blob/main/Spanner/src/Session/CacheSessionPool.php#L30

以下示例展示了如何使用 CacheSessionPoolSysVCacheItemPool,以及如何配置适当的缓存以进行身份验证

require __DIR__ . '/vendor/autoload.php';

use Google\Cloud\Spanner\SpannerClient;
use Google\Cloud\Spanner\Session\CacheSessionPool;
use Google\Auth\Cache\SysVCacheItemPool;

$authCache = new SysVCacheItemPool();
$sessionCache = new SysVCacheItemPool([
    // Use a different project identifier for ftok than the default
    'proj' => 'B',
    // We highly recommend using 250kb as it should safely contain the default
    // 500 maximum sessions the pool can handle. Please modify this value
    // accordingly depending on the number of maximum sessions you would like
    // for the pool to handle.
    'memsize' => 250000
]);

$spanner = new SpannerClient([
    'authCache' => $authCache
]);

$sessionPool = new CacheSessionPool(
    $sessionCache,
    [
        'minSessions' => 10,
        'maxSessions' => 10  // Here it will create 10 sessions under the cover.
    ]
);

$database = $spanner->connect(
    'my-instance',
    'my-db',
    [
        'sessionPool' => $sessionPool
    ]
);
// `warmup` will actually create the sessions for the first time.
$sessionPool->warmup();

通过使用类似 SysVCacheItemPool 的缓存实现,您可以在多个进程之间共享缓存的会话,例如,在服务器启动时预热会话,然后所有其他PHP进程都将从预热好的会话中受益。

版本

此组件被视为GA(通常可用)。因此,它不会在任何次要或修补版本中引入不兼容的更改。我们将以最高优先级处理问题和请求。

下一步

  1. 了解 官方文档
  2. 查看 深入使用示例