sql >> Databáze >  >> RDS >> Database

Integrujte Firebase s PHP pro komunikaci v reálném čase

Správa dat v reálném čase a transakce jsou v dnešní době nejnovějším způsobem komunikace. Lidé potřebují rychlý tok dat při používání mobilních a webových aplikací. Na internetu je k dispozici mnoho služeb pro tvorbu databází a komunikačních systémů v reálném čase. Známými nástroji jsou například Pusher, Onesignal a Firebase od Googlu. Dříve jste se naučili, jak integrovat Firebase do Laravelu, a probrali jste následující témata:

  1. Nastavte Firebase a vygenerujte klíče API.
  2. Integrovat do Laravel

V tomto příkladu PHP Firebase vám dám malou rekapitulaci předchozího článku a ukážu vám, jak integrovat Firebase do PHP 7.x a vytvořit jednoduché funkce CRUD, pomocí kterých můžete provádět manipulaci s databází.

Integrujte Firebase s PHP
  • Malá rekapitulace Firebase
  • K čemu se Firebase používá?
  • Firebase VS MySQL
  • Pro a proti Firebase
  • Nastavení Firebase v konzoli
  • Nastavte server PHP ve společnosti Cloudways
  • Integrace PHP s Firebase
  • Vytvořte spojení s Firebase
  • Vytvořte třídu uživatele v Users.php
  • Propojte Firebase s kontaktním formulářem PHP
  • Poslední slova

Malá rekapitulace Firebase

Firebase je komunikační služba v reálném čase poskytující tok dat v reálném čase pro chat, mobilní a webové aplikace. Poskytuje několik služeb v reálném čase, včetně cloudových zpráv, autentizačních systémů, databáze Firebase PHP, oznamovacích systémů, úložiště a Firebase Hosting, díky čemuž je její platforma kompletním množstvím nástrojů a služeb pro vývoj vysoce kvalitních aplikací.

V tomto článku se budu zabývat stručnými detaily databáze Firebase. Firebase ve skutečnosti poskytuje PHP databázi v reálném čase a backend jako službu. Služba poskytuje vývojářům rozhraní API, které umožňuje synchronizaci dat aplikací napříč klienty uloženými v cloudu Firebase. To eliminuje potřebu jakéhokoli relačního databázového systému na vašem hostitelském serveru, jako je MySQL a další.

K čemu se Firebase používá?

Když chce uživatel vytvářet, generovat nebo načítat data velmi rychlým tempem z databáze, služby Firebase v reálném čase mu umožňují snadno provádět operace, jako je živé vysílání, funkce chatování a další. Je to perfektní nástroj pro aplikace, které mají velké databáze jako Lyft, Shazam, Alibaba atd.

Některé hlavní funkce Firebase jsou:

  • Žádné peníze navíc za backend server
  • Rychlé zobrazení dat na serveru
  • NoSQL, což znamená rychlejší
  • Analytika
  • Zabezpečený a rychlý hosting
  • Souprava pro strojové učení
  • Služba ověřování pro zabezpečení uživatele
  • Cloudové úložiště
  • Rychlá synchronizace dat

Méně potíží. Další vývoj.

Nechte nás do budoucna zajistit vaše požadavky na hosting. Soustředíte se na vytváření svých aplikací.

Začněte zdarma

Firebase VS MySQL

Firebase je doslova jiná než tradiční databáze jako MySQL a ukládá data ve formě dokumentů. S těmito dokumenty lze manipulovat v reálném čase na multiplatformních médiích. MySQL je relační databáze, která pracuje s konceptem klíč->hodnota a vytváří vztahy s různými sadami dat.

Tyto vztahy se pak používají pro datové transakce. MySQL postrádá koncept přenosu dat v reálném čase a vyžaduje tolik práce k vytvoření REST API.

Na druhé straně databáze Firebase poskytuje různé platformy, jako je Android, iOS a Web pro vytváření rychlých rozhraní API. Firebase je v zásadě hierarchická datová struktura, tj. je to jako strom JSON v cloudu.

Firebase má koncept klíčů, což jsou názvy uzlů, pod kterými ukládáte data. Dalo by se je nějak porovnat s primárními klíči relační databáze, ale v tom není žádný koncept spravovaného cizího klíče.


Získejte svou příručku VueJS hned teď

Jednoduše zadejte svou e-mailovou adresu a získejte odkaz ke stažení ve své doručené poště.

Děkuji

Vaše e-kniha je na cestě do vaší doručené pošty.


Pro a proti Firebase

Nedávno jsem narazil na otázku Stack Exchange o výhodách a nevýhodách Firebase a velmi dobře je vysvětluje.

Pro

  • Pokud vaše aplikace běží na centralizované databázi a je aktualizována mnoha uživateli, je více než schopná zpracovat aktualizace dat mezi zařízeními v reálném čase.
  • Uložené v cloudu, takže jsou snadno dostupné všude.
  • Cross Platform API (Pokud tuto databázi používáte s aplikací)
  • Hostují data – To znamená, že pokud ukládáte velké množství dat, nemusíte se starat o hardware.

Nevýhody:

  • Pokud vaše aplikace neběží na jedné centralizované databázi aktualizované velkým množstvím uživatelů, je to velká nadbytečná práce.
  • Formát úložiště je zcela odlišný od formátu SQL (Firebase používá JSON). Takže byste nebyli schopni migrovat tak snadno.
  • Nástroje pro vytváření přehledů se zdaleka neblíží těm standardním SQL.
  • Náklady – omezeno na 50 připojení a 100 MB úložiště.
  • Vy nejste hostitelem dat, ale Firebase. V závislosti na tom, jaký server máte, se zdá, že čas sledování tam je v poslední době hodně narušován.

Nastavení Firebase v konzoli

Jak jsem uvedl výše, že předchozí článek pokryl všechny kroky k nastavení databáze Firebase v konzoli, můžete jednoduše následovat tento článek pro rychlou rekapitulaci. Body, které musíte při nastavení Firebase dodržovat:

  1. Vytvořte projekt ve Firebase
  2. Nastavení pravidel pro čtení a zápis pro uživatele
  3. Přesunout na uživatele a oprávnění ke generování klíčů API
  4. Stáhněte si tajný soubor Json a uložte jej do svého projektu

Nyní jste připraveni integrovat PHP s Firebase.

Nastavení serveru PHP ve společnosti Cloudways

Vzhledem k tomu, že Cloudways již poskytuje verzi PHP 7.x na svém hostingu pro webové stránky PHP, stačí se zaregistrovat a spustit server a vše ostatní je předem připraveno na platformě. Aplikace se nastaví spolu se serverem a můžete k ní přistupovat pomocí adresy URL na stránce s podrobnostmi o přístupu

Než spustíte Firebase na PHP serverech, musíte se postarat o několik věcí, že musíte mít k dispozici verzi PHP>=7.0 s rozšířením PHP mbstring.

Také by se vám mohlo líbit: Jak hostovat PHP na Amazon AWS EC2

Integrace PHP s Firebase

Firebase má úžasné API, které podporuje implementaci v různých jazycích. Pro použití PHP s Firebase poskytuje kompletní PHP balíček, který můžete integrovat pro práci s Firebase. V této aplikaci budu používat kreait/firebase-php což doporučuje také Firebase.

Doporučeným způsobem instalace sady Firebase Admin SDK je aplikace Composer. Composer je nástroj pro správu závislostí pro PHP, který vám umožňuje deklarovat závislosti, které váš projekt potřebuje, a instalovat je do vašeho projektu.

composer require kreait/firebase-php ^4.17.0

Případně můžete zadat Firebase Admin SDK jako závislost ve stávajícím souboru skladatel.json vašeho projektu:

{

  "require": {

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

  }

}

Po instalaci musíte vyžadovat automatický zavaděč Composer:

<?php

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

Vytvořit připojení s Firebase

Po dokončení instalace balíčku a přidání autoladeru do souboru PHP můžete vytvořit spojení s Firebase pomocí tajného souboru staženého z konzole. Adresu URL tohoto souboru musíte předat v metodě ServiceAccount::fromJsonFile(). Zadruhé najděte adresu URL aplikace 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();

Nyní v tuto chvíli, když uděláte var_dump($database); na obrazovce prohlížeče uvidíte úplný databázový objekt vrácený Firebase.

Vytvořte třídu uživatele v Users.php

Další věcí, kterou udělám, je vytvoření nového souboru Users.php a deklarování třídy User v něm. Třída bude obsahovat konstruktor, ve kterém vytvořím spojení PHP s Firebase API a inicializujem jej. Poté získám databázi vytvořenou ve firebase.

public function __construct(){

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

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

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

   }

Nyní, abych vytvořil funkce PHP CRUD pro manipulaci s databází, vytvořím samostatné metody pro každý případ použití. Nejprve však vytvořte dvě další vlastnosti mimo konstruktor, který obsahuje název databáze

protected $database;

   protected $dbname = 'users';

Nyní vytvoříme metodu get() pro načtení dat. Bude obsahovat ID uživatele pro načtení konkrétního záznamu uživatele. Metoda také zkontroluje, zda ID uživatele není dostupné nebo nastavené, v případě, že vrátí hodnotu false. Zatímco pokud zjistí, že ID je správně nastaveno, načte hodnotu úspěšně.

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;

       }

   }

Uvnitř metody insert() předám pole dat, protože může obsahovat jedno nebo více dat. Pokud jsou data pro konkrétní ID uživatele již dostupná, aktualizuje se stávající.

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;

   }

Nyní vytvořím funkci delete(), která bude mít userID jako parametr. ID bude ověřeno, pokud je nastaveno, pak metoda remove() data odstraní.

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;

       }

   }

Kompletní třída User bude vypadat následovně:

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

       }

   }

}



?>

Nyní otestujeme třídu. Zkuste použít metody a zkontrolujte databázi Firebase, zda se aktualizuje nebo ne. Nejprve inicializujte třídu:

$users = new Users();

Nyní vložíme některá data pomocí metody insert():

$users = new Users();

//var_dump($users->insert([

//    '1' => 'John',

//    '2' => 'Doe',

//    '3' => 'Smith'

//]));

Podobně můžete získat nebo odstranit data takto:

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

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

Takže můžete vidět, jak jsem vytvořil základní aplikaci CRUD pomocí PHP a Firebase vytvořením jednoduché třídy. Samozřejmě to můžete rozšířit a vytvořit něco vzrušujícího podle požadavků.


Méně potíží. Další vývoj.

Nechte nás do budoucna zajistit vaše požadavky na hosting. Soustředíte se na vytváření svých aplikací.

Začněte zdarma

Propojte Firebase s kontaktním formulářem PHP

Kontaktní formulář je základní součástí každé webové stránky, protože shromažďuje zprávy a dotazy uživatelů. Vytvořme jednoduchý kontaktní formulář PHP a propojme jej s Firebase, abychom mohli přijímat zprávy. To bude zahrnovat základní kódování, protože vám poskytne představu, jak jej připojit. Použiji stejnou třídu User.php a její funkci insert():

Kód návrhu kontaktního formuláře bude následující:

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

Nyní v souboru PHP můžete inicializovat jmenné prostory a třídu User. Poté jednoduše zachyťte vstupy a odešlete je do metody insert() Firebase. Toto je také základní kód, můžete jej rozšířit podle svých požadavků a pravidel ověřování:

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

   ]);



}

Konečná slova

Technologie se vyvíjí rychlým tempem. Abyste byli konkurenceschopní a zůstali v závodě, musíte se aktualizovat s těmi měnícími se. Podobně se často vyvíjejí i databáze a dnes můžeme vidět mnoho služeb, které poskytují databáze v reálném čase a zpracovávají data v krátkém čase.

V tomto příkladu Firebase PHP jsem vám ukázal, jak integrovat PHP s Firebase a propojit jej s kontaktním formulářem s jednoduchou třídou. Po úspěšném připojení můžete vytvářet složitější případy použití služeb Firebase. Později také napíšu více o Firebase s PHP.

Často kladené otázky

O:Mohu používat Firebase s PHP?

Odpověď:Ano, Firebase poskytuje komplexní rozhraní API pro integraci platformy s vašimi projekty PHP.

O:Mohu hostovat PHP na Firebase?

Odpověď:Ne, Firebase podporuje pouze statický hosting a jako takový nemůžete hostovat PHP skripty na Firebase.

O:Jak mohu získat data z databáze Firebase pomocí PHP?

Chcete-li získat data Firebase, musíte přejít do složky projektu a spustit příkaz:

php composer.phar require kreait/firebase-php

Dále nový index.php do složky projektu a na začátek index.php přidejte následující řádek:

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

Dále vytvořte soubor JSON ve složce

Upravte soubor index.php a vytvořte připojení k databázi.


  1. SQLcl pro přenos dat z Oracle do PostgreSQL nebo YugabyteDB 🅾🐘🚀

  2. Počítat kumulativní součet v Postgresql

  3. Vytváření plánů údržby databáze

  4. SQL Server - Dynamická PIVOT tabulka - SQL Injection