如何使用PHP向本地App Engine数据存储写入数据

8

如何在本地开发PHP和Google数据存储?

dev_appserver.py文档指出可以查看本地数据存储实体,但没有关于如何使用PHP连接/写入此本地数据存储的文档。

我可以使用以下代码将数据写入本地数据存储仿真器

// Start emulator: gcloud beta emulators datastore start --data-dir=_datastore
// Pointing this to dev_appserver's 'API server' doesn't work.
putenv('DATASTORE_EMULATOR_HOST=http://localhost:8081');
$datastore = $cloud->datastore();

但是这些实体在dev_appserver.py的本地管理员服务器http://localhost:8000/datastore中并没有显示出来。

即使将dev_appserver的--datastore_path设置为模拟器的--data-dir,也没有任何效果。

为什么数据存储仿真器和dev_appserver.py的数据存储不同?它们有相同的名称,文档中也可以互换使用。这很令人沮丧。

这是本地数据存储开发的正确方法吗?有没有一种方法可以将数据写入本地数据存储,并使实体显示在管理员服务器查看器中?


我使用 PHP-GDS(声明:我是作者),它会写入内置的数据存储,您可以通过本地管理界面访问该存储。https://github.com/tomwalder/php-gds - Tom
2个回答

1

Google Cloud Datastore Emulator和dev_appserver.py具有不同的基础存储方式。因此,在管理服务器查看器中无法显示Datastore模拟器上的实体。

参见:

可能有两种方法来连接本地数据存储(我没有尝试过php):

  1. 使用{{link3:用于标准环境的appengine-php-sdk}},通过dev_appserver.py启动开发服务器,并从管理服务器查看器中查看数据存储。

  2. 使用{{link4:适用于PHP的google/cloud库}},并设置DATASTORE_EMULATOR_HOST环境变量。

很遗憾,模拟器没有查看器,因此我正在开发CLI工具来通过GQL检查数据存储实体:https://github.com/nshmura/dsio


0

你尝试过在包含库之前将环境变量传递给 PHP 可执行文件吗?

也许可以尝试这样做:

#/bin/sh
export DATASTORE_EMULATOR_HOST=http://localhost:8081
dev_appserver.py ... 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接