sql >> データベース >  >> RDS >> Database

リアルタイム通信のためにFirebaseをPHPと統合する

    リアルタイムのデータ管理とトランザクションは、最近の最新の通信モードです。モバイルおよびWebアプリケーションを使用している間、人々は迅速なデータフローを必要としています。リアルタイムデータベースと通信システムを作成するためにインターネット上で利用可能な多くのサービスがあります。たとえば、Pusher、Onesignal、GoogleのFirebaseはそのための有名なツールです。以前は、FirebaseをLaravelに統合する方法を学び、次のトピックについて説明しました。

    1. FirebaseをセットアップしてAPIキーを生成します。
    2. Laravelに統合する

    このPHPFirebaseの例では、前の記事を少し要約し、FirebaseをPHP 7.xに統合して、データベース操作を実行できる簡単なCRUD関数を作成する方法を示します。

    FirebaseをPHPと統合する
    • Firebaseの概要
    • Firebaseは何に使用されますか?
    • Firebase VS MySQL
    • Firebaseの長所と短所
    • コンソールでのFirebaseの設定
    • CloudwaysでのPHPサーバーのセットアップ
    • PHPとFirebaseの統合
    • Firebaseとの接続を作成する
    • Users.phpでユーザークラスを作成する
    • FirebaseをPHPお問い合わせフォームに接続する
    • 最後の言葉

    Firebaseの概要

    Firebaseは、チャット、モバイル、ウェブアプリケーションにリアルタイムのデータフローを提供するリアルタイムコミュニケーションサービスです。クラウドメッセージング、認証システム、Firebase PHPデータベース、通知システム、ストレージ、Firebaseホスティングなど、いくつかのリアルタイムサービスを提供し、プラットフォームを高品質のアプリを開発するためのツールとサービスの完全な数にします。

    この記事では、Firebaseデータベースの簡単な詳細について説明します。実際、FirebaseはPHPのリアルタイムデータベースとバックエンドをサービスとして提供しています。このサービスは、Firebaseクラウドに保存されているクライアント間でアプリケーションデータの同期を可能にするAPIを開発者に提供します。これにより、MySQLなどのホスティングサーバー上のリレーショナルデータベースシステムが不要になります。

    Firebaseは何に使用されますか?

    ユーザーがデータベースから非常に速いペースでデータを作成、生成、またはフェッチしたい場合、Firebaseリアルタイムサービスを使用すると、ライブストリーミング、チャット機能などの操作を簡単に実行できます。 Lyft、Shazam、Alibabaなどの大規模なデータベースを持つアプリケーションに最適なツールです。

    Firebaseの主な機能は次のとおりです。

    • バックエンドサーバーに追加のお金はありません
    • サーバー内のデータのクイック表示
    • NoSQLはより高速であることを意味します
    • 分析
    • 安全で高速なホスティング
    • 機械学習キット
    • ユーザーセキュリティのための認証サービス
    • クラウドストレージ
    • データの迅速な同期

    面倒な作業が減ります。さらなる開発。

    ホスティング要件を将来にわたって利用できるようにしましょう。アプリケーションの構築に集中します。

    無料で始める

    Firebase VS MySQL

    Firebaseは、MySQLなどの従来のデータベースとは文字通り異なり、データをドキュメントの形式で保存します。これらのドキュメントは、クロスプラットフォームメディアでリアルタイムに操作できます。 MySQLは、キー->値の概念で動作し、さまざまなデータセットとの関係を作成するリレーショナルデータベースです。

    これらの関係は、データトランザクションに使用されます。 MySQLにはリアルタイムのデータ遷移の概念がなく、RESTAPIを作成するには非常に多くの作業が必要です。

    一方、Firebaseデータベースは、Android、iOS、Webなどのさまざまなプラットフォームを提供してクイックAPIを作成します。基本的に、Firebaseは階層的なデータ構造です。つまり、クラウドのJSONツリーのようなものです。

    Firebaseには、データを保存するノードの名前であるキーの概念があります。どういうわけか、それらをリレーショナルデータベースの主キーと比較することはできますが、管理された外部キーの概念はありません。


    VueJSハンドブックを今すぐ入手

    メールアドレスを入力して、受信トレイにダウンロードリンクを取得するだけです。

    ありがとうございます

    あなたの電子ブックはあなたの受信箱への道を進んでいます。


    Firebaseの長所と短所

    最近、Firebaseの長所と短所に関するStack Exchangeの質問に出くわしましたが、それはそれらを非常によく説明しています。

    プロ

    • アプリが一元化されたDBで実行され、多くのユーザーによって更新される場合、デバイス間のリアルタイムのデータ更新を処理する能力を超えています。
    • >
    • クラウドに保存されているため、どこでもすぐに利用できます。
    • クロスプラットフォームAPI(このDBをアプリで使用している場合)
    • データをホストします–つまり、大量のデータを保存している場合は、ハードウェアについて心配する必要はありません。

    短所:

    • 膨大な数のユーザーによって更新された1つの集中型データベースでアプリを実行しない限り、それは大きなやり過ぎです。
    • ストレージ形式はSQLの形式とはまったく異なります(FirebaseはJSONを使用します)。そのため、簡単に移行することはできません。
    • レポートツールは、標準SQLのツールに近いものではありません。
    • コスト–50接続と100MBのストレージに制限されています。
    • データをホストしませんが、Firebaseはホストします。取得するサーバーによっては、最近、サーバーを表示するのに多くの混乱が生じているようです。
    コンソールでのFirebaseの設定

    前の記事でコンソールでFirebaseデータベースを設定するためのすべての手順を説明したことを上で述べたように、その記事に従うだけで簡単に要約できます。 Firebaseを設定するために従う必要のあるポイントは次のとおりです。

    1. Firebaseでプロジェクトを作成する
    2. ユーザーの読み取りと書き込みのルールを設定する
    3. ユーザーと権限に移動してAPIキーを生成します
    4. 秘密のJsonファイルをダウンロードして、プロジェクト内に保存します

    これで、PHPをFirebaseと統合する準備が整いました。

    CloudwaysでPHPサーバーをセットアップする

    CloudwaysはすでにPHPWebサイトのホスティングでPHP7.xバージョンを提供しているため、サーバーにサインアップして起動するだけで、残りはすべてプラットフォーム上で事前に作成されています。アプリケーションはサーバーと一緒にセットアップされ、アクセス詳細ページのURLを介してアクセスできます

    PHPサーバーでFirebaseを実行する前に、いくつかの点に注意する必要があります。つまり、PHP>=7.0バージョンとmbstringPHP拡張機能を使用できる必要があります。

    あなたも好きかもしれません: AmazonAWSEC2でPHPをホストする方法

    PHPとFirebaseの統合

    Firebaseには、さまざまな言語での実装をサポートするすばらしいAPIがあります。 PHPをFirebaseで使用するために、Firebaseでの作業用に統合できる完全なPHPパッケージを提供します。このアプリケーションでは、 kreait / firebase-phpを使用します これはFirebaseでも推奨されています。

    Firebase Admin SDKをインストールするための推奨される方法は、Composerを使用することです。 Composerは、PHPの依存関係管理ツールであり、プロジェクトに必要な依存関係を宣言して、プロジェクトにインストールできます。

    composer require kreait/firebase-php ^4.17.0

    または、プロジェクトの既存のcomposer.jsonファイルの依存関係としてFirebaseAdminSDKを指定することもできます。

    {
    
      "require": {
    
         "kreait/firebase-php": "^4.17.0"
    
      }
    
    }

    インストール後、Composerのオートローダーが必要です:

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

    Firebaseとの接続を作成

    パッケージのインストールが完了し、オートラダーをPHPファイルに追加したら、コンソールからダウンロードしたシークレットファイルを使用してFirebaseとの接続を作成できます。 ServiceAccount ::fromJsonFile()メソッドでそのファイルのURLを渡す必要があります。次に、FirebaseアプリケーションのURLを見つけます。

    <?php
    
    require __DIR__.'/vendor/autoload.php';
    
    
    
    use Kreait\Firebase\Factory;
    
    use Kreait\Firebase\ServiceAccount;
    
    
    
    // This assumes that you have placed the Firebase credentials in the same directory
    
    // as this PHP file.
    
    $serviceAccount = ServiceAccount::fromJsonFile(__DIR__ . '/secret/php-firebase-7f39e-c654ccd32aba.json');
    
    
    
    $firebase = (new Factory)
    
       ->withServiceAccount($serviceAccount)
    
       ->withDatabaseUri('https://my-project.firebaseio.com')
    
       ->create();
    
    
    
    $database = $firebase->getDatabase();

    この時点で、var_dump($ database);を実行します。 Firebaseから返された完全なデータベースオブジェクトがブラウザの画面に表示されます。

    Users.phpでユーザークラスを作成

    次に行うことは、Users.phpという名前の新しいファイルを作成し、その中でUserクラスを宣言することです。このクラスには、Firebase APIを使用してPHPの接続を作成し、初期化するコンストラクターが含まれます。その後、Firebaseでデータベースを作成します。

    public function __construct(){
    
           $acc = ServiceAccount::fromJsonFile(__DIR__ . '/secret/php-firebase-7f39e-c654ccd32aba.json');
    
           $firebase = (new Factory)->withServiceAccount($acc)->create();
    
           $this->database = $firebase->getDatabase();
    
       }

    次に、データベースを操作するPHP CRUD関数を作成するために、ユースケースごとに個別のメソッドを作成します。ただし、最初に、データベース名を含むコンストラクターの外部にさらに2つのプロパティを作成しましょう

    protected $database;
    
       protected $dbname = 'users';

    次に、データを取得するためのget()メソッドを作成しましょう。特定のユーザーレコードをフェッチするためのuserIDが含まれます。このメソッドは、userIDが使用できないか設定されていないかどうかもチェックし、その場合はfalseを返します。 IDが適切に設定されていることがわかった場合は、値を正常に取得します。

    public function get(int $userID = NULL){    
    
           if (empty($userID) || !isset($userID)) { return FALSE; }
    
           if ($this->database->getReference($this->dbname)->getSnapshot()->hasChild($userID)){
    
               return $this->database->getReference($this->dbname)->getChild($userID)->getValue();
    
           } else {
    
               return FALSE;
    
           }
    
       }

    insert()メソッド内には、単一または複数のデータを含めることができるため、データの配列を渡します。特定のユーザーIDのデータがすでに利用可能な場合は、既存のユーザーIDが更新されます。

    public function insert(array $data) {
    
           if (empty($data) || !isset($data)) { return FALSE; }
    
           foreach ($data as $key => $value){
    
               $this->database->getReference()->getChild($this->dbname)->getChild($key)->set($value);
    
           }
    
           return TRUE;
    
       }

    次に、userIDをパラメーターとして持つdelete()関数を作成します。が設定されている場合、IDが検証され、remove()メソッドがデータを削除します。

    public function delete(int $userID) {
    
           if (empty($userID) || !isset($userID)) { return FALSE; }
    
           if ($this->database->getReference($this->dbname)->getSnapshot()->hasChild($userID)){
    
               $this->database->getReference($this->dbname)->getChild($userID)->remove();
    
               return TRUE;
    
           } else {
    
               return FALSE;
    
           }
    
       }

    完全なUserクラスは次のようになります。

    <?php
    
    require_once './vendor/autoload.php';
    
    
    
    use Kreait\Firebase\Factory;
    
    use Kreait\Firebase\ServiceAccount;
    
    
    
    class Users {
    
       protected $database;
    
       protected $dbname = 'users';
    
       public function __construct(){
    
           $acc = ServiceAccount::fromJsonFile(__DIR__ . '/secret/php-firebase-7f39e-c654ccd32aba.json');
    
           $firebase = (new Factory)->withServiceAccount($acc)->create();
    
           $this->database = $firebase->getDatabase();
    
       }
    
    
    
       public function get(int $userID = NULL){    
    
           if (empty($userID) || !isset($userID)) { return FALSE; }
    
           if ($this->database->getReference($this->dbname)->getSnapshot()->hasChild($userID)){
    
               return $this->database->getReference($this->dbname)->getChild($userID)->getValue();
    
           } else {
    
               return FALSE;
    
           }
    
       }
    
    
    
       public function insert(array $data) {
    
           if (empty($data) || !isset($data)) { return FALSE; }
    
           foreach ($data as $key => $value){
    
               $this->database->getReference()->getChild($this->dbname)->getChild($key)->set($value);
    
           }
    
           return TRUE;
    
       }
    
    
    
       public function delete(int $userID) {
    
           if (empty($userID) || !isset($userID)) { return FALSE; }
    
           if ($this->database->getReference($this->dbname)->getSnapshot()->hasChild($userID)){
    
               $this->database->getReference($this->dbname)->getChild($userID)->remove();
    
               return TRUE;
    
           } else {
    
               return FALSE;
    
           }
    
       }
    
    }
    
    
    
    ?>
    
    

    それでは、クラスをテストしましょう。メソッドを適用して、Firebaseデータベースが更新されているかどうかを確認してください。最初にクラスを初期化します:

    $users = new Users();

    次に、insert()メソッドを使用してデータを挿入しましょう:

    $users = new Users();
    
    //var_dump($users->insert([
    
    //    '1' => 'John',
    
    //    '2' => 'Doe',
    
    //    '3' => 'Smith'
    
    //]));

    同様に、次のようにデータを取得または削除できます。

    var_dump($users->get(1));
    
    var_dump($users->delete(2));

    したがって、単純なクラスを作成することで、PHPとFirebaseを使用して基本的なCRUDアプリケーションを構築した方法を確認できます。明らかに、それを拡張して、要件に従ってエキサイティングなものを作成することができます。


    面倒な作業が減ります。さらなる開発。

    ホスティング要件を将来にわたって利用できるようにしましょう。アプリケーションの構築に集中します。

    無料で始める

    FirebaseをPHPお問い合わせフォームに接続

    お問い合わせフォームは、ユーザーのメッセージやクエリを収集するため、Webサイトの重要なコンポーネントの1つです。簡単なPHPお問い合わせフォームを作成し、Firebaseに接続してメッセージを受信しましょう。これは、接続方法のアイデアを提供するだけなので、基本的なコーディングで構成されます。同じクラスのUser.phpとそのinsert()関数を使用します:

    お問い合わせフォームのデザインコードは次のようになります:

    <!DOCTYPE html>
    
    <html>
    
    
    
    <head>
    
       <title>Page Title</title>
    
    </head>
    
    
    
    <body>
    
    
    
       <link href="https://netdna.bootstrapcdn.com/bootstrap/3.1.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
    
       <script src="//netdna.bootstrapcdn.com/bootstrap/3.1.0/js/bootstrap.min.js"></script>
    
       <script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
    
       <!-- Include the above in your HEAD tag -->
    
    
    
       <div class="container">
    
           <div class="row">
    
               <div class="col-md-6 col-md-offset-3">
    
                   <div class="well well-sm">
    
                       <form class="form-horizontal" action="" method="post">
    
                           <fieldset>
    
                               <legend class="text-center">Contact us</legend>
    
    
    
                               <!-- Name input-->
    
                               <div class="form-group">
    
                                   <label class="col-md-3 control-label" for="name">Name</label>
    
                                   <div class="col-md-9">
    
                                       <input id="name" name="name" type="text" placeholder="Your name" class="form-control">
    
                                   </div>
    
                               </div>
    
    
    
                               <!-- Email input-->
    
                               <div class="form-group">
    
                                   <label class="col-md-3 control-label" for="email">Your E-mail</label>
    
                                   <div class="col-md-9">
    
                                       <input id="email" name="email" type="text" placeholder="Your email" class="form-control">
    
                                   </div>
    
                               </div>
    
    
    
                               <!-- Message body -->
    
                               <div class="form-group">
    
                                   <label class="col-md-3 control-label" for="message">Your message</label>
    
                                   <div class="col-md-9">
    
                                       <textarea class="form-control" id="message" name="message" placeholder="Please enter your message here..." rows="5"></textarea>
    
                                   </div>
    
                               </div>
    
    
    
                               <!-- Form actions -->
    
                               <div class="form-group">
    
                                   <div class="col-md-12 text-right">
    
                                       <button type="submit" name="submit" class="btn btn-primary btn-lg">Submit</button>
    
                                   </div>
    
                               </div>
    
                           </fieldset>
    
                       </form>
    
                   </div>
    
               </div>
    
           </div>
    
       </div>
    
    
    
    </body>
    
    
    
    </html>
    
    

    これで、PHPファイルで名前名とUserクラスを初期化できます。その後、入力をキャッチしてFirebaseのinsert()メソッドに送信します。また、これは基本的なコードであり、要件と検証ルールに従って拡張できます。

    < ? php
    
    
    
    require __DIR__.
    
    '/vendor/autoload.php';
    
    require 'Users.php';
    
    
    use Kreait\ Firebase\ Factory;
    
    use Kreait\ Firebase\ ServiceAccount;
    
    
    $users = new Users();
    
    
    if (isset($_POST['submit'])) {
    
    
       $name = $_POST['name'];
    
       $email = $_POST['email'];
    
       $message = $_POST['message'];
    
    
       $users - > insert([
    
           'name' => $name,
    
           'email' => $email,
    
           'message' => $message
    
       ]);
    
    
    
    }
    最後の言葉

    テクノロジーは急速に進化しています。競争力を維持し、レースにとどまるためには、変化するもので自分自身を更新する必要があります。同様に、データベースも頻繁に進化しており、今日では多くのサービスがリアルタイムデータベースを提供し、データを短時間で処理していることがわかります。

    このFirebasePHPの例では、PHPをFirebaseと統合し、簡単なクラスの連絡フォームに接続する方法を示しました。接続に成功すると、Firebaseサービスを利用するためのより複雑なユースケースを作成できます。 PHPを使用したFirebaseについても後で詳しく説明します。

    よくある質問

    Q:PHPでFirebaseを使用できますか?

    A:はい、FirebaseはプラットフォームをPHPプロジェクトと統合するための包括的なAPIを提供します。

    Q:FirebaseでPHPをホストできますか?

    A:いいえ、Firebaseは静的ホスティングのみをサポートしているため、FirebaseでPHPスクリプトをホストすることはできません。

    Q:PHPを使用してFirebaseデータベースからデータを取得するにはどうすればよいですか?

    Firebaseデータを取得するには、プロジェクトフォルダに移動して、次のコマンドを実行する必要があります:

    php composer.phar require kreait/firebase-php

    次に、新しい index.php プロジェクトフォルダに移動し、index.phpの先頭に次の行を追加します。

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

    次に、フォルダーにJSONファイルを作成します

    index.phpを編集して、データベースへの接続を作成します。


    1. sqliteが返されました:エラーコード=1、msg =そのような列はありません:kitchen1

    2. 使用量にカウントを設定

    3. ole-dbのOracleプロバイダーのバージョンを確認する方法。 OraOLEDB.Oracleプロバイダー

    4. R12.2のadopのカットオーバーフェーズで何が起こるか