Database
 sql >> Baza danych >  >> RDS >> Database

Zintegruj Firebase z PHP do komunikacji w czasie rzeczywistym

Zarządzanie danymi i transakcjami w czasie rzeczywistym to obecnie najnowszy sposób komunikacji. Ludzie potrzebują szybkiego przepływu danych podczas korzystania z aplikacji mobilnych i webowych. W Internecie dostępnych jest wiele usług do tworzenia baz danych i systemów komunikacyjnych w czasie rzeczywistym. Na przykład Pusher, Onesignal i Google Firebase są znanymi narzędziami do tego celu. Wcześniej nauczyłeś się integrować Firebase z Laravel i omówiłeś następujące tematy:

  1. Skonfiguruj Firebase i wygeneruj klucze API.
  2. Zintegruj z Laravel

W tym przykładzie PHP Firebase przedstawię krótkie podsumowanie poprzedniego artykułu i pokażę, jak zintegrować Firebase z PHP 7.x, tworząc proste funkcje CRUD, za pomocą których można manipulować bazą danych.

Zintegruj Firebase z PHP
  • Małe podsumowanie Firebase
  • Do czego służy Firebase?
  • Firebase VS MySQL
  • Wady i zalety Firebase
  • Konfigurowanie Firebase w konsoli
  • Skonfiguruj serwer PHP w Cloudways
  • Zintegruj PHP z Firebase
  • Utwórz połączenie z Firebase
  • Utwórz klasę użytkownika w Users.php
  • Połącz Firebase z formularzem kontaktowym PHP
  • Końcowe słowa

Krótkie podsumowanie Firebase

Firebase to usługa komunikacyjna w czasie rzeczywistym zapewniająca przepływ danych w czasie rzeczywistym dla aplikacji czatowych, mobilnych i internetowych. Zapewnia kilka usług czasu rzeczywistego, w tym wiadomości w chmurze, systemy uwierzytelniania, bazę danych Firebase PHP, systemy powiadomień, pamięć masową i hosting Firebase, dzięki czemu jej platforma jest kompletną gamą narzędzi i usług do tworzenia wysokiej jakości aplikacji.

W tym artykule omówię krótki opis bazy danych Firebase. W rzeczywistości Firebase zapewnia bazę danych PHP czasu rzeczywistego i backend jako usługę. Usługa zapewnia programistom interfejs API, który umożliwia synchronizację danych aplikacji między klientami przechowywanymi w chmurze Firebase. Eliminuje to potrzebę jakiegokolwiek relacyjnego systemu baz danych na serwerze hostingowym, takiego jak MySQL i inne.

Do czego służy Firebase?

Gdy użytkownik chce tworzyć, generować lub pobierać dane w bardzo szybkim tempie z bazy danych, usługi czasu rzeczywistego Firebase zapewniają mu łatwość wykonywania operacji, takich jak transmisja strumieniowa na żywo, funkcja czatu i wiele innych. Jest to idealne narzędzie dla aplikacji, które mają duże bazy danych, takich jak Lyft, Shazam, Alibaba itp.

Niektóre główne funkcje Firebase to:

  • Brak dodatkowych pieniędzy na serwer zaplecza
  • Szybkie wyświetlanie danych na serwerze
  • NoSQL, co oznacza, że ​​jest szybszy
  • Analityka
  • Bezpieczny i szybki hosting
  • Zestaw do uczenia maszynowego
  • Usługa uwierzytelniania dla bezpieczeństwa użytkownika
  • Przechowywanie w chmurze
  • Szybka synchronizacja danych

Mniej kłopotów. Więcej rozwoju.

Pozwól nam przygotować na przyszłość Twoje wymagania hostingowe. Skupiasz się na tworzeniu swoich aplikacji.

Rozpocznij bezpłatnie

Firebase VS MySQL

Firebase dosłownie różni się od tradycyjnych baz danych, takich jak MySQL i przechowuje dane w postaci dokumentów. Dokumentami tymi można manipulować w czasie rzeczywistym w mediach międzyplatformowych. MySQL to relacyjna baza danych, która współpracuje z koncepcją klucz->wartość i tworzy relacje z różnymi zestawami danych.

Relacje te są następnie wykorzystywane do transakcji na danych. MySQL nie ma koncepcji przenoszenia danych w czasie rzeczywistym i wymaga tak wiele pracy, aby stworzyć interfejsy API REST.

Z drugiej strony baza danych Firebase udostępnia różne platformy, takie jak Android, iOS i Web, do tworzenia szybkich interfejsów API. Zasadniczo Firebase to hierarchiczna struktura danych, czyli jest jak drzewo JSON w chmurze.

Firebase wykorzystuje koncepcję kluczy, czyli nazw węzłów, w których przechowujesz dane. Można je jakoś porównać z kluczami podstawowymi relacyjnej bazy danych, ale nie ma w niej pojęcia zarządzanego klucza obcego.


Kup swój podręcznik VueJS teraz

Po prostu wprowadź swój adres e-mail i uzyskaj link do pobrania w swojej skrzynce odbiorczej.

Dziękuję

Twój e-book jest w drodze do Twojej skrzynki odbiorczej.


Wady i zalety Firebase

Niedawno natknąłem się na pytanie Stack Exchange dotyczące zalet i wad Firebase, które bardzo dobrze je wyjaśnia.

Profesjonaliści

  • Jeśli Twoja aplikacja działa w scentralizowanej bazie danych i jest aktualizowana przez wielu użytkowników, jest w stanie obsłużyć aktualizacje danych w czasie rzeczywistym między urządzeniami.
  • Przechowywane w chmurze, tak łatwo dostępne wszędzie.
  • Cross Platform API (jeśli używasz tej bazy danych z aplikacją)
  • Obsługują one dane – co oznacza, że ​​jeśli przechowujesz dużo danych, nie musisz się martwić o sprzęt.

Wady:

  • Jeżeli Twoja aplikacja nie działa w jednej scentralizowanej bazie danych aktualizowanej przez ogromną liczbę użytkowników, jest to poważna przesada.
  • Format przechowywania jest zupełnie inny niż SQL (Firebase używa formatu JSON). Więc nie będziesz w stanie tak łatwo przeprowadzić migracji.
  • Narzędzia do raportowania nie są ani trochę zbliżone do tych ze standardowego SQL.
  • Koszty — ograniczone do 50 połączeń i 100 MB pamięci.
  • Nie hostujesz danych, robi to Firebase. W zależności od tego, który serwer masz, oglądanie tam czasu wydaje się być ostatnio dużymi zakłóceniami.

Konfigurowanie Firebase w konsoli

Jak wspomniałem powyżej, w poprzednim artykule omówiono wszystkie kroki konfiguracji bazy danych Firebase w konsoli, możesz po prostu śledzić ten artykuł, aby uzyskać krótkie podsumowanie. Aby skonfigurować Firebase, należy wykonać następujące czynności:

  1. Utwórz projekt w Firebase
  2. Skonfiguruj reguły odczytu i zapisu dla użytkowników
  3. Przejdź do użytkownika i uprawnień do generowania kluczy API
  4. Pobierz tajny plik Json i zapisz w swoim projekcie

Teraz jesteś gotowy do integracji PHP z Firebase.

Skonfiguruj serwer PHP w Cloudways

Ponieważ Cloudways udostępnia już wersję PHP 7.x na swoim hostingu dla witryn PHP, wystarczy zarejestrować się i uruchomić serwer, a cała reszta jest wstępnie przygotowana na platformie. Aplikacja zostanie skonfigurowana wraz z serwerem i będzie można uzyskać do niej dostęp za pośrednictwem adresu URL na stronie szczegółów dostępu

Musisz zadbać o kilka rzeczy przed uruchomieniem Firebase na serwerach PHP, musisz mieć dostępną wersję PHP>=7.0 z rozszerzeniem PHP mbstring.

Możesz też polubić: Jak hostować PHP na Amazon AWS EC2

Integracja PHP z Firebase

Firebase ma świetny interfejs API, który obsługuje implementację w różnych językach. Do korzystania z PHP z Firebase zapewnia kompletny pakiet PHP, który można zintegrować do pracy z Firebase. W tej aplikacji użyję kreait/firebase-php co jest również zalecane przez Firebase.

Zalecanym sposobem instalacji pakietu Firebase Admin SDK jest użycie Composera. Composer to narzędzie do zarządzania zależnościami dla PHP, które pozwala deklarować zależności wymagane przez projekt i instalować je w projekcie.

composer require kreait/firebase-php ^4.17.0

Możesz też określić pakiet Firebase Admin SDK jako zależność w istniejącym pliku composer.json projektu:

{

  "require": {

     "kreait/firebase-php": "^4.17.0"

  }

}

Po instalacji potrzebujesz autoloadera Composera:

<?php

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

Utwórz połączenie z Firebase

Po zakończeniu instalacji pakietu i dodaniu autolader do pliku PHP, możesz utworzyć połączenie z Firebase za pomocą tajnego pliku pobranego z konsoli. Musisz przekazać adres URL tego pliku w metodzie ServiceAccount::fromJsonFile(). Po drugie, znajdź adres URL aplikacji Firebase.

<?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();

Teraz w tej chwili, gdy robisz var_dump($database); na ekranie przeglądarki zobaczysz pełny obiekt bazy danych zwrócony przez Firebase.

Utwórz klasę użytkownika w Users.php

Następną rzeczą, którą zrobię, jest utworzenie nowego pliku o nazwie Users.php i zadeklarowanie w nim klasy User. Klasa będzie zawierała konstruktor, w którym utworzę połączenie PHP z Firebase API i zainicjuję je. Następnie otrzymam bazę danych utworzoną w Firebase.

public function __construct(){

       $acc = ServiceAccount::fromJsonFile(__DIR__ . '/secret/php-firebase-7f39e-c654ccd32aba.json');

       $firebase = (new Factory)->withServiceAccount($acc)->create();

       $this->database = $firebase->getDatabase();

   }

Teraz, aby stworzyć funkcje PHP CRUD do manipulowania bazą danych, stworzę osobne metody dla każdego przypadku użycia. Ale najpierw utwórzmy dwie dodatkowe właściwości poza konstruktorem, który zawiera nazwę bazy danych

protected $database;

   protected $dbname = 'users';

Teraz stwórzmy metodę get() do pobierania danych. Będzie zawierał identyfikator użytkownika do pobrania konkretnego rekordu użytkownika. Metoda sprawdzi również, czy identyfikator użytkownika nie jest dostępny lub ustawiony, w takim przypadku zwróci false. Jeśli natomiast stwierdzi, że identyfikator jest odpowiednio ustawiony, pomyślnie pobierze wartość.

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;

       }

   }

Wewnątrz metody insert() przekażę tablicę danych, ponieważ może ona zawierać jedną lub wiele danych. Natomiast jeśli dane są już dostępne dla określonego identyfikatora użytkownika, zaktualizuje on istniejący.

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;

   }

Teraz stworzę funkcję delete(), której parametrem będzie identyfikator użytkownika. Identyfikator zostanie zweryfikowany, jeśli jest ustawiony, a metoda remove() usunie dane.

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;

       }

   }

Pełna klasa użytkownika będzie wyglądać następująco:

<?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;

       }

   }

}



?>

Teraz przetestujmy klasę. Spróbuj zastosować metody i sprawdź, czy baza danych Firebase jest aktualizowana, czy nie. Najpierw zainicjuj klasę:

$users = new Users();

Teraz wstawmy trochę danych za pomocą metody insert():

$users = new Users();

//var_dump($users->insert([

//    '1' => 'John',

//    '2' => 'Doe',

//    '3' => 'Smith'

//]));

Podobnie możesz uzyskać lub usunąć dane w ten sposób:

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

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

Możesz więc zobaczyć, jak zbudowałem podstawową aplikację CRUD przy użyciu PHP i Firebase, tworząc prostą klasę. Oczywiście możesz go rozszerzyć i stworzyć coś ekscytującego zgodnie z wymaganiami.


Mniej kłopotów. Więcej rozwoju.

Pozwól nam przygotować na przyszłość Twoje wymagania hostingowe. Skupiasz się na tworzeniu swoich aplikacji.

Rozpocznij bezpłatnie

Połącz Firebase z formularzem kontaktowym PHP

Formularz kontaktowy jest jednym z podstawowych elementów każdej strony internetowej, ponieważ gromadzi wiadomości i zapytania użytkowników. Stwórzmy prosty formularz kontaktowy PHP i połączmy go z Firebase, aby otrzymywać wiadomości. Będzie to obejmować podstawowe kodowanie, ponieważ da ci tylko pomysł, jak to połączyć. Użyję tej samej klasy User.php i jej funkcji insert():

Kod projektu formularza kontaktowego będzie następujący:

<!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>

Teraz w pliku PHP możesz zainicjować przestrzenie nazw i klasę User. Następnie po prostu przechwyć dane wejściowe i wyślij je do metody insert() Firebase. Jest to również podstawowy kod, który można rozszerzyć zgodnie z własnymi wymaganiami i zasadami walidacji:

< ? 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

   ]);



}

Końcowe słowa

Technologia ewoluuje w szybkim tempie. Aby być konkurencyjnym i pozostać w wyścigu, musisz aktualizować się za pomocą zmieniających się. Podobnie bazy danych również często ewoluują i możemy dziś zobaczyć wiele usług dostarczających bazy danych w czasie rzeczywistym, przetwarzających dane w mgnieniu oka.

W tym przykładzie Firebase PHP pokazałem, jak zintegrować PHP z Firebase i połączyć go z formularzem kontaktowym z prostą klasą. Po pomyślnym połączeniu możesz tworzyć bardziej złożone przypadki użycia, aby korzystać z usług Firebase. O Firebase z PHP napiszę też później.

Często Zadawane Pytania

P:Czy mogę używać Firebase z PHP?

O:Tak, Firebase zapewnia kompleksowy interfejs API do integracji platformy z projektami PHP.

P:Czy mogę hostować PHP w Firebase?

O:Nie, Firebase obsługuje tylko hosting statyczny i jako taki nie możesz hostować skryptów PHP w Firebase.

P:Jak mogę uzyskać dane z bazy danych Firebase przy użyciu PHP?

Aby uzyskać dane Firebase, musisz przejść do folderu projektu i uruchomić polecenie:

php composer.phar require kreait/firebase-php

Następnie nowy index.php do folderu projektu i dodaj następującą linię na początku index.php:

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

Następnie utwórz plik JSON w folderze

Edytuj index.php i utwórz połączenie z bazą danych.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak klasyfikowane są polecenia SQL | UBIQ

  2. Minimalne logowanie za pomocą INSERT…SELECT do pustych tabel klastrowych

  3. Badanie wpływu obciążenia ad hoc na wydajność

  4. Łączenie różnych źródeł danych w warstwie

  5. Operatory SQL