Database
 sql >> база данни >  >> RDS >> Database

Интегрирайте Firebase с PHP за комуникация в реално време

Управлението на данни в реално време и транзакциите са най-новият начин на комуникация в наши дни. Хората се нуждаят от бърз поток от данни, докато използват мобилни и уеб приложения. В интернет има много услуги за създаване на бази данни в реално време и комуникационни системи. Например Pusher, Onesignal и Firebase на Google са известни инструменти за това. Преди това научихте как да интегрирате Firebase в Laravel и покрихте следните теми:

  1. Настройте Firebase и генерирайте ключове за API.
  2. Интегриране в Laravel

В този пример за PHP Firebase ще ви дам кратко обобщение на предишната статия и ще ви покажа как да интегрирате Firebase в PHP 7.x, създавайки прости функции CRUD, с които можете да извършвате манипулация на базата данни.

Интегрирайте Firebase с PHP
  • Малко обобщение на Firebase
  • За какво се използва Firebase?
  • Firebase VS MySQL
  • Плюсове и минуси на Firebase
  • Настройване на Firebase в конзолата
  • Настройте PHP сървър в Cloudways
  • Интегрирайте PHP с Firebase
  • Създайте връзка с Firebase
  • Създайте потребителски клас в Users.php
  • Свържете Firebase с PHP формуляр за контакт
  • Заключителни думи

Малко резюме на Firebase

Firebase е комуникационна услуга в реално време, осигуряваща поток от данни в реално време за чат, мобилни и уеб приложения. Той предоставя няколко услуги в реално време, включително облачни съобщения, системи за удостоверяване, база данни на Firebase PHP, системи за уведомяване, съхранение и Firebase хостинг, което прави платформата му пълен набор от инструменти и услуги за разработване на висококачествени приложения.

В тази статия ще разгледам кратки подробности за базата данни на Firebase. Всъщност Firebase предоставя PHP база данни в реално време и бекенд като услуга. Услугата предоставя на разработчиците API, който позволява синхронизиране на данни на приложения между клиенти, съхранявани в облака на Firebase. Това елиминира необходимостта от каквато и да е система за релационна база данни на вашия хостинг сървър като MySQL и други.

За какво се използва Firebase?

Когато потребителят иска да създава, генерира или извлича данни с много бързи темпове от базата данни, услугите в реално време на Firebase му улесняват извършването на операции като поточно предаване на живо, функция за чат и други. Това е идеален инструмент за приложения, които имат големи бази данни като Lyft, Shazam, Alibaba и др.

Някои основни характеристики на Firebase са:

  • Без допълнителни пари за бекенд сървър
  • Бързо показване на данни в сървъра
  • NoSQL, което означава, че е по-бърз
  • Анализ
  • Сигурен и бърз хостинг
  • Комплект за машинно обучение
  • Услуга за удостоверяване за сигурност на потребителите
  • Облачно хранилище
  • Бърза синхронизация на данни

По-малко проблеми. Още развитие.

Позволете ни да осигурим бъдещето на вашите изисквания за хостинг. Вие се фокусирате върху изграждането на вашите приложения.

Започнете безплатно

Firebase VS MySQL

Firebase е буквално различен от традиционните бази данни като MySQL и съхранява данни под формата на документи. Тези документи могат да се манипулират в реално време в различни платформи. MySQL е релационна база данни, която работи с концепция ключ-> стойност и създава връзки с различен набор от данни.

След това тези отношения се използват за транзакции с данни. MySQL няма концепцията за преход на данни в реално време и изисква толкова много работа за създаване на REST API.

От друга страна базата данни на Firebase предоставя различни платформи като Android, iOS и Web за създаване на бързи API. По принцип Firebase е йерархична структура от данни, тоест е точно като JSON дърво в облака.

Firebase има концепцията за ключове, които са имената на възлите, под които съхранявате данни. Можете по някакъв начин да ги сравните с първичните ключове на релационна база данни, но в нея няма концепция за управляван външен ключ.


Вземете своя наръчник за VueJS сега

Просто въведете имейл адреса си и получете връзката за изтегляне във входящата си кутия.

Благодаря Ви

Вашата електронна книга е на път към входящата ви поща.


Плюсове и минуси на Firebase

Наскоро попаднах на въпрос на Stack Exchange относно плюсовете и минусите на Firebase и той ги обяснява много добре.

Професионалисти

  • Ако приложението ви работи в централизирана БД и се актуализира от много потребители, то е повече от способно да обработва актуализациите на данни в реално време между устройствата.
  • Съхранява се в облака, така че е лесно достъпно навсякъде.
  • API за различни платформи (ако използвате тази база данни с приложение)
  • Те хостват данните – което означава, че ако съхранявате много данни, не е нужно да се притеснявате за хардуера.

Недостатъци:

  • Освен ако приложението ви не работи в една централизирана база данни, актуализирана от огромно количество потребители, това е голямо прекомерно преувеличение.
  • Форматът за съхранение е напълно различен от този на SQL (Firebase използва JSON). Така че няма да можете да мигрирате толкова лесно.
  • Инструментите за отчитане не са никъде близо до тези на стандартния SQL.
  • Разходи – ограничени до 50 връзки и 100 MB съхранение.
  • Не хоствате данните, а Firebase. В зависимост от това кой сървър получавате, времето за гледане там изглежда доста смущаващо напоследък.

Настройване на Firebase в конзолата

Както споменах по-горе, че предишната статия обхваща всички стъпки за настройка на база данни на Firebase в конзолата, можете просто да следвате тази статия за кратко обобщение. Точките, които трябва да следвате, за да настроите Firebase, са:

  1. Създайте проект във Firebase
  2. Настройте правила за четене и запис за потребителите
  3. Преместване на потребител и разрешения за генериране на API ключове
  4. Изтеглете секретния Json файл и го запазете във вашия проект

Сега сте готови да интегрирате PHP с Firebase.

Настройте PHP сървър в Cloudways

Тъй като Cloudways вече предоставя версия на PHP 7.x на своя хостинг за PHP уебсайтове, просто трябва да се регистрирате и стартирате сървър, а всичко останало идва предварително направено на платформата. Приложението ще се настрои заедно със сървъра и можете да получите достъп до него чрез URL в страницата с подробности за достъп

Трябва да се погрижите за няколко неща, преди да стартирате Firebase на PHP сървъри, че трябва да имате PHP>=7.0 версия на разположение с PHP разширение mbstring.

Може да харесате и: Как да хоствате PHP на Amazon AWS EC2

Интегрирайте PHP с Firebase

Firebase има страхотен API, който поддържа внедряване на различни езици. За използване на PHP с Firebase, той предоставя пълен PHP пакет, който можете да интегрирате за работа с Firebase. В това приложение ще използвам kreait/firebase-php което се препоръчва и от Firebase.

Препоръчителният начин за инсталиране на Firebase Admin SDK е с Composer. Composer е инструмент за управление на зависимости за PHP, който ви позволява да декларирате зависимостите, от които се нуждае вашият проект, и да ги инсталира във вашия проект.

composer require kreait/firebase-php ^4.17.0

Като алтернатива можете да посочите Firebase Admin SDK като зависимост в съществуващия файл composer.json на вашия проект:

{

  "require": {

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

  }

}

След като инсталирате, трябва да изисквате автоматичното зареждане на Composer:

<?php

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

Създаване на връзка с Firebase

След като завършите инсталацията на пакета и добавите автоматичното зареждане към PHP файла, можете да създадете връзка с Firebase, като използвате секретния файл, изтеглен от конзолата. Трябва да предадете URL адреса на този файл в метода ServiceAccount::fromJsonFile(). Второ, намерете URL адреса на приложението 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();

Сега по това време, когато правите var_dump($database); ще видите пълния обект на база данни, върнат от Firebase на екрана на вашия браузър.

Създаване на потребителски клас в Users.php

Следващото нещо, което ще направя, е да създам нов файл, наречен Users.php и да декларирам потребителски клас в него. Класът ще съдържа конструктор, в който ще създам връзка на PHP с Firebase API и ще го инициализирам. След това ще получа базата данни, създадена във 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 функции за манипулиране на база данни, ще създам отделни методи за всеки случай на употреба. Но първо нека създадем още две свойства извън конструктора, който съдържа името на базата данни

protected $database;

   protected $dbname = 'users';

Сега нека създадем метод get() за извличане на данните. Той ще съдържа userID за извличане на конкретен потребителски запис. Методът също така ще провери дали userID не е наличен или зададен, в случай на това ще върне false. Докато ако установи, че идентификаторът е правилно зададен, ще извлече стойността успешно.

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() ще предам масива от данни, защото той може да съдържа единични или множество данни. Докато ако данните вече са налични за конкретния потребителски идентификатор, той ще актуализира съществуващия.

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;

   }

Сега ще създам функция delete(), която ще има userID като параметър. Идентификационният номер ще бъде валидиран, ако е зададен, след което методът 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;

       }

   }

Пълният потребителски клас ще бъде както следва:

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

Така че можете да видите как създадох основно приложение CRUD, използвайки PHP и Firebase, като създадох прост клас. Очевидно можете да го разширите и да създадете нещо вълнуващо според изискванията.


По-малко проблеми. Още развитие.

Позволете ни да осигурим бъдещето на вашите изисквания за хостинг. Вие се фокусирате върху изграждането на вашите приложения.

Започнете безплатно

Свържете Firebase с PHP формуляр за контакт

Формата за контакт е основен компонент на всеки уебсайт, тъй като събира съобщения и запитвания на потребителите. Нека създадем прост 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 файла можете да инициализирате пространствата от имена и потребителския клас. След това просто хванете входовете и ги изпратете към метода insert() на Firebase. Също така това е основен код, можете да го разширите според вашите изисквания и правила за валидиране:

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

   ]);



}

Последни думи

Технологията се развива с бързи темпове. За да бъдете конкурентни и да останете в състезанието, трябва да се актуализирате с променящите се. По подобен начин базите данни също се развиват често и днес можем да видим много услуги, предоставящи база данни в реално време, обработвайки данни навреме.

В този пример за Firebase PHP ви демонстрирах как да интегрирате PHP с Firebase и да го свържете с формуляр за контакт с прост клас. След като се свържете успешно, можете да създадете по-сложни случаи на използване, за да използвате услугите на Firebase. По-късно също ще пиша повече за Firebase с PHP.

често задавани въпроси

В:Мога ли да използвам Firebase с PHP?

О:Да, Firebase предоставя изчерпателен API за интегриране на платформата с вашите PHP проекти.

В:Мога ли да хоствам PHP на Firebase?

О:Не, Firebase поддържа само статичен хостинг и като такъв не можете да хоствате PHP скриптове във Firebase.

В:Как мога да получа данни от база данни на Firebase с помощта на PHP?

За да получите данните от Firebase, трябва да отидете в папката на проекта и да изпълните командата:

php composer.phar require kreait/firebase-php

След това нов index.php в папката на проекта и добавете следния ред в горната част на index.php:

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

След това създайте JSON файл в папката

Редактирайте index.php и създайте връзка с базата данни.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Миграция на DB със съветника за няколко таблици NextForm

  2. Основи на паралелното програмиране с рамката Fork/Join в Java

  3. Нотацията на Баркър

  4. Какво е пролетна интеграция?

  5. Как да проектираме модел на база данни за система за резервации в киносалон