3

Google は、App Engine の PHP ランタイムのサポートを発表しました。ネイティブの App Engine データストアを利用する Java ランタイムを使用してアプリを開発しました。現在、モバイル クライアントのバック エンドとして機能しています。このデータストアに接続する必要がある別の Web フロント エンドの開発を検討しています。これに取り組んでいる開発者は PHP での開発を好むため、この発表のタイミングは興味深いものです。

ただし、ドキュメントに目を通すと、「データの保存」の下のオプションとして、 Google Cloud SQLGoogle Cloud Storageへの参照のみが表示されます。PHP ランタイムを使用してネイティブの App Engine データストアに接続することは可能ですか?

4

4 に答える 4

4

I/O では、PHP アプリケーションからデータストアにアクセスする方法を今のところ考える必要があるCloud Datastoreも発表します。

于 2013-05-17T04:00:46.530 に答える
3
  1. プロジェクトで Google Cloud データストアを有効にする必要があります。https://developers.google.com/datastore/docs/activate#google_cloud_datastore_for_an_existing_app_engine_applicationを参照してください。

    注: コンピューティング エンジンを有効にする必要はありません

    管理コンソールで、アプリケーション設定のクラウド統合セクションに「プロジェクトが正常に作成されました。詳細については、基本セクションを参照してください。

  2. AppEngine https://gaeforphp-blog.appspot.com/2013/08/06/using-the-google-apis-client-library-for-php-で Google API クライアント ライブラリを取得して使用する方法の手順に従います。 with-app-engine/

  3. デコードされたエンティティ キーを検索するための添付の作業例を参照してください: Guestbook: name=default_guestbook > Greeting: id=5733953138851840

<?php

const SERVICE_ACCOUNT_NAME = 'your-service-account-id@developer.gserviceaccount.com';


require_once 'libraries/google-api-php-client/src/Google_Client.php';
require_once 'libraries/google-api-php-client/src/contrib/Google_DatastoreService.php';

$client = new Google_Client();
$client->setApplicationName("your_app_id");

$key = file_get_contents('storage/your-hashed-keyid-privatekey.p12');
$client->setAssertionCredentials(
    new Google_AssertionCredentials(
        SERVICE_ACCOUNT_NAME,
        array('https://www.googleapis.com/auth/userinfo.email',
              'https://www.googleapis.com/auth/datastore'),
        $key)
);

$datastore = new Google_DatastoreService($client);

$lookup = new Google_LookupRequest();

$path1 = new Google_KeyPathElement();
$path1->setKind('Guestbook');
$path1->setName('default_guestbook');

$path2 = new Google_KeyPathElement();
$path2->setKind('Greeting');
# this is just an example check a real entity id in your datastore
# if you do not have ancestor entity you only need one (path1) element
$path2->setId('5733953138851840');

$key = new Google_Key();
$key->setPath([$path1,$path2]);

$keyArray = array();
$keyArray[] = $key;
$lookup->setKeys($keyArray);

if(array_key_exists('catchError', $_GET)){
    try{
        $result = $datastore->datasets->lookup('your_project_name', $lookup);
        var_dump($result);
    }
    catch(Google_ServiceException $e){
        echo "<pre>";
        var_dump($e);
        echo "</pre>";
    }
}
else{
    $result = $datastore->datasets->lookup('your_project_name', $lookup);
    var_dump($result);
}
于 2013-08-26T07:11:28.160 に答える
2

このライブラリは最近 (私によって) リリースされました - 人々がこのスレッドを見つけるのに役立つことを願っています.

これにより、PHP からの Datastore の使用が (App Engine であるかどうかに関係なく) はるかに簡単になります。

https://github.com/tomwalder/php-gds

楽しみ!

于 2015-02-18T00:03:27.913 に答える
0

参照: https://developers.google.com/datastore/docs/concepts/gql#using_literals_sample_code

<?php
const APP_NAME='a-test-com';
const SERVICE_ACCOUNT_NAME='511908@developer.gserviceaccount.com';
$_PRIVATE_KEY=file_get_contents('data/34672c-privatekey.p12');
require_once 'google-api-php-client/Google_Client.php';

$client=new Google_Client();
$credentials=new Google_AssertionCredentials(SERVICE_ACCOUNT_NAME,
                                             array('https://www.googleapis.com/auth/userinfo.email',
                                                   'https://www.googleapis.com/auth/datastore'
                                                  ),
                                             $_PRIVATE_KEY
                                            );
$client->setAssertionCredentials($credentials);

$postBody=json_encode(array('gqlQuery'=>array('allowLiteral'=>true, 'queryString'=>
          "SELECT * FROM Guestbook WHERE __key__=key(Guestbook, 'default_guestbook')"
          )));
$httpRequest=new Google_HttpRequest('datastore/v1beta2/datasets/'.APP_NAME.'/runQuery', 'POST', null, $postBody);
$head=array('content-type'=>'application/json; charset=UTF-8',
            'content-length'=>Google_Utils::getStrLen($postBody)
           );
$httpRequest->setRequestHeaders($head);
$httpRequest=Google_Client::$auth->sign($httpRequest);
$result=Google_REST::execute($httpRequest);
var_export($result);
?>

挿入コード: GQL を使用して管理コンソールのデータストア ビューアを使用してレコードを挿入する方法

于 2013-10-10T14:30:21.830 に答える