sql >> Databasteknik >  >> RDS >> Database

Integrera Firebase med PHP för realtidskommunikation

Datahantering och transaktioner i realtid är det senaste kommunikationssättet för närvarande. Människor behöver snabbt dataflöde när de använder mobil- och webbapplikationer. Det finns många tjänster tillgängliga på internet för att skapa realtidsdatabaser och kommunikationssystem. Till exempel Pusher, Onesignal och Googles Firebase är kända verktyg för det. Tidigare har du lärt dig hur du integrerar Firebase i Laravel och behandlat följande ämnen:

  1. Konfigurera Firebase och generera API-nycklar.
  2. Integrera i Laravel

I detta PHP Firebase-exempel kommer jag att ge dig en liten sammanfattning av tidigare artikel och kommer att visa dig hur du integrerar Firebase i PHP 7.x, och skapar en enkel CRUD-funktion med vilken du kan utföra databasmanipulation.

Integrera Firebase med PHP
  • En liten sammanfattning av Firebase
  • Vad används Firebase till?
  • Firebase VS MySQL
  • För- och nackdelar med Firebase
  • Konfigurera Firebase i konsolen
  • Konfigurera PHP Server på Cloudways
  • Integrera PHP med Firebase
  • Skapa anslutning med Firebase
  • Skapa användarklass i Users.php
  • Anslut Firebase med PHP-kontaktformulär
  • Slutord

En liten sammanfattning av Firebase

Firebase är en kommunikationstjänst i realtid som tillhandahåller dataflöde i realtid för chatt-, mobil- och webbapplikationer. Den tillhandahåller flera realtidstjänster inklusive molnmeddelanden, auth-system, Firebase PHP-databas, aviseringssystem, lagring och Firebase Hosting, vilket gör dess plattform till en komplett uppsjö av verktyg och tjänster för att utveckla appar av hög kvalitet.

I den här artikeln kommer jag att täcka korta detaljer om Firebase-databasen. Firebase tillhandahåller faktiskt en PHP-realtidsdatabas och backend som en tjänst. Tjänsten tillhandahåller utvecklare ett API som tillåter synkronisering av applikationsdata mellan klienter lagrade i Firebase-molnet. Detta eliminerar behovet av alla relationsdatabassystem på din värdserver som MySQL och andra.

Vad används Firebase till?

När användaren vill skapa, generera eller hämta data i mycket snabb takt från databasen, ger Firebase realtidstjänster dem lätt att utföra operationer som livestreaming, chattfunktion och mer. Det är ett perfekt verktyg för applikationer som har stora databaser som Lyft, Shazam, Alibaba etc.

Några viktiga funktioner i Firebase är:

  • Inga extra pengar för backend-server
  • Snabb visning av data på servern
  • NoSQL vilket innebär att det går snabbare
  • Analytics
  • Säkert och snabbt värdskap
  • Machine Learning Kit
  • Autentiseringstjänst för användarsäkerhet
  • Molnlagring
  • Snabb synkronisering av data

Mindre krångel. Mer utveckling.

Låt oss framtidssäkra dina värdkrav. Du fokuserar på att bygga dina applikationer.

Börja gratis

Firebase VS MySQL

Firebase är bokstavligen annorlunda än traditionella databaser som MySQL och lagrar data i form av dokument. Dessa dokument kan manipuleras i realtid i plattformsöverskridande medier. MySQL är en relationsdatabas som arbetar med nyckel->värdekoncept och skapar relationer med olika datauppsättningar.

Dessa relationer används sedan för datatransaktioner. MySQL saknar dataövergångskonceptet i realtid och kräver så mycket arbete för att skapa REST API:er.

Å andra sidan tillhandahåller Firebase-databasen olika plattformar som Android, iOS och webben för att skapa snabba API:er. I grund och botten är Firebase en hierarkisk datastruktur, dvs det är precis som ett JSON-träd i molnet.

Firebase har konceptet med nycklar, som är namnen på de noder som du lagrar data under. Du kan på något sätt jämföra dem med primärnycklarna i en relationsdatabas men det finns inget koncept för en hanterad främmande nyckel i den.


Hämta din VueJS-handbok nu

Ange helt enkelt din e-postadress och få nedladdningslänken i din inkorg.

Tack

Din e-bok är på väg till din inkorg.


För- och nackdelar med Firebase

Nyligen stötte jag på Stack Exchange Question om för- och nackdelar med Firebase och den förklarar dem väldigt bra.

Proffs

  • Om din app körs på en centraliserad DB och uppdateras av många användare är den mer än kapabel att hantera datauppdateringar i realtid mellan enheter.
  • Lagrade i molnet så lättillgängligt överallt.
  • Cross Platform API (om du använder denna DB med en app)
  • De är värd för data – vilket innebär att om du lagrar mycket data behöver du inte oroa dig för hårdvara.

Nackdelar:

  • Om inte din app körs på en centraliserad databas uppdaterad av ett stort antal användare, är det en stor överdrift.
  • Lagringsformatet skiljer sig helt från SQL (Firebase använder JSON). Så du skulle inte kunna migrera så lätt.
  • Rapporteringsverktyg är inte i närheten av de för standard SQL.
  • Kostnader – begränsade till 50 anslutningar och 100 MB lagringsutrymme.
  • Du är inte värd för data, det gör Firebase. Beroende på vilken server du får, verkar det vara mycket störande att titta på den senaste tiden.

Konfigurera Firebase i konsolen

Som jag har nämnt ovan att den tidigare artikeln har täckt alla steg för att ställa in Firebase-databasen i konsolen, kan du helt enkelt följa den artikeln för en snabb sammanfattning. Punkterna du behöver följa för att konfigurera Firebase är:

  1. Skapa ett projekt i Firebase
  2. Ställ in läs- och skrivregler för användare
  3. Flytta till användare och behörigheter för att generera API-nycklar
  4. Ladda ner den hemliga Json-filen och spara i ditt projekt

Nu är du redo att integrera PHP med Firebase.

Konfigurera PHP-servern på Cloudways

Eftersom Cloudways redan tillhandahåller PHP 7.x-versionen på sin hosting för PHP-webbplatser, behöver du bara registrera dig och starta en server och resten kommer färdigtillverkat på plattformen. Applikationen konfigureras tillsammans med servern och du kan komma åt den via URL på sidan med åtkomstdetaljer

Du måste ta hand om några saker innan du kör Firebase på PHP-servrar, att du måste ha PHP>=7.0-version tillgänglig med mbstring PHP-tillägg.

Du kanske också gillar: Hur man är värd för PHP på Amazon AWS EC2

Integrera PHP med Firebase

Firebase har ett fantastiskt API som stöder implementering på olika språk. För att använda PHP med Firebase tillhandahåller det ett komplett PHP-paket som du kan integrera för att arbeta med Firebase. I den här applikationen kommer jag att använda kreait/firebase-php som också rekommenderas av Firebase.

Det rekommenderade sättet att installera Firebase Admin SDK är med Composer. Composer är ett beroendehanteringsverktyg för PHP som låter dig deklarera vilka beroenden ditt projekt behöver och installerar dem i ditt projekt.

composer require kreait/firebase-php ^4.17.0

Alternativt kan du ange Firebase Admin SDK som ett beroende i ditt projekts befintliga composer.json-fil:

{

  "require": {

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

  }

}

Efter installationen måste du kräva Composers autoloader:

<?php

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

Skapa anslutning med Firebase

När du har slutfört paketinstallationen och lagt till autoladdaren till PHP-filen kan du skapa en anslutning till Firebase med den hemliga filen som laddats ner från konsolen. Du måste skicka ut URL:en till den filen i metoden ServiceAccount::fromJsonFile(). För det andra, hitta Firebase-applikationens 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();

Nu vid den här tiden när du gör var_dump($database); du kommer att se hela databasobjektet som returneras av Firebase på din webbläsarskärm.

Skapa användarklass i Users.php

Nästa sak jag kommer att göra är att skapa en ny fil som heter Users.php och deklarera en User-klass i den. Klassen kommer att innehålla en konstruktor där jag skapar en anslutning av PHP med Firebase API och initierar den. Efter det ska jag skapa databasen i firebase.

public function __construct(){

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

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

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

   }

Nu för att skapa PHP CRUD-funktioner för att manipulera databasen, kommer jag att skapa separata metoder för varje användningsfall. Men låt oss först skapa ytterligare två egenskaper utanför konstruktorn som innehåller databasnamnet

protected $database;

   protected $dbname = 'users';

Låt oss nu skapa en get()-metod för att hämta data. Den kommer att innehålla användar-ID för att hämta specifik användarpost. Metoden kommer också att kontrollera om användar-ID inte är tillgängligt eller inställt, i händelse av det kommer att returnera falskt. Medan om identifierar att ID är korrekt inställt, kommer värdet att hämtas framgångsrikt.

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;

       }

   }

Inuti metoden insert() skickar jag arrayen av data eftersom den kan innehålla enstaka eller flera data. Om datan redan är tillgänglig för det specifika användar-ID, kommer det att uppdatera det befintliga.

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;

   }

Nu ska jag skapa en delete()-funktion som kommer att ha användar-ID som parameter. ID:t kommer att valideras om det är inställt, sedan tar metoden remove() bort data.

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;

       }

   }

Den fullständiga användarklassen kommer att vara följande:

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

       }

   }

}



?>

Låt oss nu testa klassen. Försök att tillämpa metoder och kontrollera Firebase-databasen om den uppdateras eller inte. Initiera först klassen:

$users = new Users();

Låt oss nu infoga lite data via metoden insert():

$users = new Users();

//var_dump($users->insert([

//    '1' => 'John',

//    '2' => 'Doe',

//    '3' => 'Smith'

//]));

På samma sätt kan du hämta eller ta bort data så här:

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

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

Så du kan se hur jag byggde en grundläggande CRUD-applikation med PHP och Firebase genom att skapa en enkel klass. Självklart kan du utöka det och skapa något spännande enligt kraven.


Mindre krångel. Mer utveckling.

Låt oss framtidssäkra dina värdkrav. Du fokuserar på att bygga dina applikationer.

Börja gratis

Anslut Firebase med PHP-kontaktformulär

Kontaktformulär är en viktig komponent på alla webbplatser eftersom det samlar in användarnas meddelanden och frågor. Låt oss skapa ett enkelt PHP-kontaktformulär och koppla det till Firebase för att ta emot meddelanden. Detta kommer att omfatta grundläggande kodning eftersom det bara ger dig en idé om hur du ansluter den. Jag kommer att använda samma klass User.php och dess insert() funktion:

Kontaktformulärets designkod kommer att vara följande:

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

Nu i PHP-filen kan du initiera namnområdena och användarklassen. Efter det, fånga helt enkelt ingångarna och skicka dem till metoden insert() i Firebase. Detta är också en grundläggande kod, du kan utöka den enligt dina krav och valideringsregler:

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

   ]);



}

Slutord

Tekniken utvecklas i snabb takt. För att vara konkurrenskraftig och hålla sig i loppet måste du uppdatera dig med de föränderliga. På liknande sätt utvecklas databaser också ofta och vi kan se många tjänster idag som tillhandahåller en databas i realtid, som bearbetar data på kort tid.

I det här Firebase PHP-exemplet har jag visat dig hur du integrerar PHP med Firebase och kopplar det med ett kontaktformulär med enkel klass. När du väl har anslutit framgångsrikt kan du skapa mer komplexa användningsfall för att använda Firebase-tjänster. Jag kommer också att skriva mer om Firebase med PHP senare.

Vanliga frågor

F:Kan jag använda Firebase med PHP?

S:Ja, Firebase tillhandahåller ett omfattande API för att integrera plattformen med dina PHP-projekt.

F:Kan jag vara värd för PHP på Firebase?

S:Nej, Firebase stöder bara statisk värd och som sådan kan du inte vara värd för PHP-skript på Firebase.

F:Hur kan jag hämta data från en Firebase-databas med PHP?

För att hämta Firebase-data måste du gå till projektmappen och köra kommandot:

php composer.phar require kreait/firebase-php

Därefter en ny index.php till projektmappen och lägg till följande rad överst i index.php:

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

Skapa sedan en JSON-fil i mappen

Redigera index.php och skapa en anslutning till databasen.


  1. Hur man lägger till kolumn för automatisk ökning i befintlig tabell i MySQL

  2. När ska man använda UTOM i motsats till INTE FINNS i Transact SQL?

  3. kommaseparerad lista som ett resultat av select-satsen i Oracle

  4. Introduktion till HDFS | Vad är HDFS och hur fungerar det?