您可以使用PHP连接Azure CosmosDB吗?

时间:2018-02-07 19:28:56

标签: php azure azure-cosmosdb

我目前正在构建一个webapp,我需要使用CosmosDB。我一直在尝试为PHP找到连接脚本,但我似乎找不到直接的答案。

所以我的问题是,我可以使用PHP连接Azure Cosmos DB吗?我有一个来自Unity的脚本,它将数据解析为CosmosDB作为JSON文件,但是我可以使用PHP连接到Azure吗?什么方法最适合访问数据?

如果是,是否需要API或某个连接脚本?我愿意接受建议,但是直接的答案会有很大的帮助,因为我目前正在使用Bluehost的共享主机,所以我坚持使用典型的LAMP配置。

顺便说一下,如果你以某种方式发现这篇文章很熟悉,那是因为我在半小时前也在Reddit上发布了这个帖子。

谢谢!

3 个答案:

答案 0 :(得分:0)

克隆https://github.com/Azure-Samples/azure-cosmos-db-graph-php-getting-started.git 然后在connect.php中填写您的凭据

$db = new Connection([
    'host' => '<your_server_address>.graphs.azure.com',
    'username' => '/dbs/<db>/colls/<coll>',
    'password' => 'your_primary_key'
    ,'port' => '443'
    // Required parameter
    ,'ssl' => TRUE
]);

答案 1 :(得分:0)

如果要将Azure Cosmos DB用作MongoDB,则可以使用其MongoDB Api和“官方” MongoDB库。

获取连接字符串

要了解连接字符串,请遵循以下文档:https://docs.microsoft.com/es-es/azure/cosmos-db/connect-mongodb-account#GetCustomConnection

从那里:

  1. 在Internet浏览器中,登录到Azure门户。
  2. 在Azure Cosmos数据库刀片中,选择MongoDB帐户的API。
  3. 在帐户刀片服务器的左窗格中,单击“连接字符串”。
  4. 将打开“连接字符串”刀片。它具有使用MongoDB驱动程序连接到帐户所需的所有信息,包括预先构造的连接字符串。

Azure Cosmos DB支持标准MongoDB连接字符串URI格式,但有两个特定要求:Azure Cosmos DB帐户需要身份验证和通过SSL的安全通信。因此,连接字符串格式为:

mongodb://username:password@host:port/[database]?ssl=true

此字符串的值在前面显示的“连接字符串”刀片中可用:

  • 用户名(必填):Azure Cosmos DB帐户名。
  • 密码(必填):Azure Cosmos DB帐户密码。
  • 主机(必需):Azure Cosmos数据库帐户的FQDN。
  • 端口(必填):10255。
  • 数据库(可选):连接使用的数据库。如果未提供数据库,则默认数据库为“测试”。
  • ssl = true(必需)

例如,考虑“连接字符串”刀片中显示的帐户。有效的连接字符串为:

mongodb://contoso123:0Fc3IolnL12312asdfawejunASDF@asdfYXX2t8a97kghVcUzcDv98hawelufhawefafnoQRGwNj2nMPL1Y9qsIr9Srdw==@contoso123.documents.azure.com:10255/mydatabase?ssl=true

访问数据

对于当前在PHP中的使用,您可以使用http://php.net/manual/en/mongodb.tutorial.library.php

通过运行以下命令安装库:

$ composer require mongodb/mongodb

一个示例,这是将文档插入到演示数据库的beers集合中的方式:

<?php
require 'vendor/autoload.php'; // include Composer's autoloader

$client = new MongoDB\Client("mongodb://localhost:27017");
$collection = $client->demo->beers;

$result = $collection->insertOne( [ 'name' => 'Hinterland', 'brewery' => 'BrewDog' ] );

echo "Inserted with Object ID '{$result->getInsertedId()}'";
?>

答案 2 :(得分:-1)

不幸的是,Azure CosmosDB(DocumentDB API)目前还没有正式的PHP SDK。

您可以使用Reading BLE Attributes或社区驱动程序(如REST API)与CosmosDB进行交互。