Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

Tích hợp Firebase với PHP để giao tiếp thời gian thực

Quản lý dữ liệu thời gian thực và giao dịch là phương thức giao tiếp mới nhất hiện nay. Mọi người cần luồng dữ liệu nhanh trong khi sử dụng các ứng dụng web và di động. Có rất nhiều dịch vụ có sẵn trên internet để tạo cơ sở dữ liệu thời gian thực và hệ thống liên lạc. Ví dụ:Pusher, Onesignal và Firebase của Google là những công cụ nổi tiếng cho việc đó. Trước đây, bạn đã học cách tích hợp Firebase trong Laravel và bao gồm các chủ đề sau:

  1. Thiết lập Firebase và tạo khóa API.
  2. Tích hợp trong Laravel

Trong ví dụ PHP Firebase này, tôi sẽ giới thiệu cho bạn một chút tóm tắt về bài viết trước và sẽ chỉ cho bạn cách Tích hợp Firebase trong PHP 7.x, tạo một hàm CRUD đơn giản mà bạn có thể thực hiện thao tác với cơ sở dữ liệu.

Tích hợp Firebase với PHP
  • Bản tóm tắt nhỏ về Firebase
  • Firebase được sử dụng để làm gì?
  • Firebase VS MySQL
  • Ưu và nhược điểm của Firebase
  • Thiết lập Firebase trong Bảng điều khiển
  • Thiết lập Máy chủ PHP tại Cloudways
  • Tích hợp PHP với Firebase
  • Tạo kết nối với Firebase
  • Tạo lớp người dùng trong Users.php
  • Kết nối Firebase với Biểu mẫu liên hệ PHP
  • Lời cuối cùng

Sơ lược về Firebase

Firebase là dịch vụ giao tiếp thời gian thực cung cấp luồng dữ liệu thời gian thực cho các ứng dụng trò chuyện, di động và web. Nó cung cấp một số dịch vụ thời gian thực bao gồm nhắn tin đám mây, hệ thống xác thực, cơ sở dữ liệu Firebase PHP, hệ thống thông báo, lưu trữ và lưu trữ Firebase, làm cho nền tảng của nó có rất nhiều công cụ và dịch vụ hoàn chỉnh để phát triển ứng dụng chất lượng cao.

Trong bài viết này, tôi sẽ trình bày chi tiết ngắn gọn về cơ sở dữ liệu Firebase. Trên thực tế, Firebase cung cấp cơ sở dữ liệu thời gian thực PHP và chương trình phụ trợ như một dịch vụ. Dịch vụ cung cấp cho các nhà phát triển một API cho phép đồng bộ hóa dữ liệu ứng dụng giữa các máy khách được lưu trữ trên đám mây Firebase. Điều này giúp loại bỏ sự cần thiết của bất kỳ hệ thống cơ sở dữ liệu quan hệ nào trên máy chủ lưu trữ của bạn như MySQL và các hệ thống khác.

Firebase được sử dụng để làm gì?

Khi người dùng muốn tạo, tạo hoặc tìm nạp dữ liệu với tốc độ rất nhanh từ cơ sở dữ liệu, các dịch vụ thời gian thực của Firebase giúp họ dễ dàng thực hiện các thao tác như phát trực tiếp, chức năng trò chuyện và hơn thế nữa. Nó là một công cụ hoàn hảo cho các ứng dụng có cơ sở dữ liệu lớn như Lyft, Shazam, Alibaba, v.v.

Một số tính năng chính của Firebase là:

  • Không có thêm tiền cho máy chủ phụ trợ
  • Hiển thị nhanh dữ liệu trong máy chủ
  • NoSQL có nghĩa là nó nhanh hơn
  • Phân tích
  • Lưu trữ an toàn và nhanh chóng
  • Bộ công cụ học máy
  • Dịch vụ xác thực để bảo mật người dùng
  • Bộ nhớ đám mây
  • Đồng bộ hóa dữ liệu nhanh chóng

Ít rắc rối hơn. Phát triển thêm.

Hãy để chúng tôi chứng minh các yêu cầu lưu trữ của bạn trong tương lai. Bạn tập trung vào việc xây dựng các ứng dụng của mình.

Bắt đầu miễn phí

Firebase VS MySQL

Firebase thực sự khác với các cơ sở dữ liệu truyền thống như MySQL và lưu trữ dữ liệu dưới dạng tài liệu. Các tài liệu này có thể được xử lý trong thời gian thực trên các phương tiện đa nền tảng. MySQL là một cơ sở dữ liệu quan hệ hoạt động với khái niệm khóa-> giá trị và tạo quan hệ với các tập dữ liệu khác nhau.

Các quan hệ này sau đó được sử dụng cho các giao dịch dữ liệu. MySQL thiếu khái niệm chuyển đổi dữ liệu thời gian thực và đòi hỏi rất nhiều công việc để tạo các API REST.

Mặt khác, cơ sở dữ liệu Firebase cung cấp các nền tảng khác nhau như Android, iOS và Web để tạo các API nhanh. Về cơ bản Firebase là một cấu trúc dữ liệu phân cấp, tức là nó giống như một cây JSON trên đám mây.

Firebase có khái niệm về khóa, là tên của các nút mà bạn lưu trữ dữ liệu. Bằng cách nào đó, bạn có thể so sánh chúng với khóa chính của cơ sở dữ liệu quan hệ nhưng không có khái niệm về khóa ngoại được quản lý trong đó.


Nhận Sổ tay VueJS của bạn ngay bây giờ

Chỉ cần nhập địa chỉ email của bạn và nhận liên kết tải xuống trong Hộp thư đến của bạn.

Cảm ơn bạn

Sách điện tử của bạn đã sẵn sàng đến Hộp thư đến của bạn.


Ưu và nhược điểm của Firebase

Gần đây, tôi đã xem Câu hỏi về Stack Exchange về chuyên nghiệp và con của Firebase và nó giải thích rất rõ về chúng.

Chuyên nghiệp

  • Nếu ứng dụng của bạn chạy trên DB tập trung và được cập nhật bởi nhiều người dùng thì ứng dụng đó có nhiều khả năng xử lý các bản cập nhật dữ liệu thời gian thực giữa các thiết bị.
  • Được lưu trữ trên đám mây nên luôn sẵn sàng ở mọi nơi.
  • API nền tảng chéo (Nếu bạn đang sử dụng DB này với một ứng dụng)
  • Chúng lưu trữ dữ liệu - Có nghĩa là nếu bạn đang lưu trữ nhiều dữ liệu, bạn không phải lo lắng về phần cứng.

Con của:

  • Trừ khi ứng dụng của bạn chạy trên một cơ sở dữ liệu tập trung được cập nhật bởi một lượng lớn người dùng, đó là một mức quá mức cần thiết.
  • Định dạng lưu trữ hoàn toàn khác với định dạng của SQL (Firebase sử dụng JSON). Vì vậy, bạn sẽ không thể di chuyển dễ dàng.
  • Công cụ báo cáo không giống với công cụ của SQL chuẩn.
  • Chi phí - Giới hạn ở 50 kết nối và 100mb bộ nhớ.
  • Bạn không lưu trữ dữ liệu, Firebase thì có. Tùy thuộc vào máy chủ mà bạn nhận được, thời gian xem ở đó dường như bị gián đoạn nhiều gần đây.

Thiết lập Firebase trong Bảng điều khiển

Như tôi đã đề cập ở trên rằng bài viết trước đã trình bày tất cả các bước để thiết lập cơ sở dữ liệu Firebase trong bảng điều khiển, bạn có thể chỉ cần theo dõi bài viết đó để tóm tắt nhanh. Những điểm bạn cần tuân theo để thiết lập Firebase là:

  1. Tạo dự án trong Firebase
  2. Thiết lập quy tắc đọc và ghi cho người dùng
  3. Di chuyển tới người dùng và quyền để tạo khóa API
  4. Tải xuống tệp Json bí mật và lưu bên trong dự án của bạn

Bây giờ, Bạn đã sẵn sàng tích hợp PHP với Firebase.

Thiết lập Máy chủ PHP tại Cloudways

Vì Cloudways đã cung cấp phiên bản PHP 7.x trên dịch vụ lưu trữ cho các trang web PHP, bạn chỉ cần đăng ký và khởi chạy một máy chủ và tất cả phần còn lại đều được tạo sẵn trên nền tảng. Ứng dụng sẽ thiết lập cùng với máy chủ và bạn có thể truy cập nó qua URL trong trang chi tiết truy cập

Bạn cần lưu ý một số điều trước khi chạy Firebase trên máy chủ PHP, đó là bạn phải có sẵn phiên bản PHP> =7.0 với phần mở rộng mbstring PHP.

Bạn Cũng Có thể Thích: Cách lưu trữ PHP trên Amazon AWS EC2

Tích hợp PHP với Firebase

Firebase có một API tuyệt vời hỗ trợ triển khai bằng các ngôn ngữ khác nhau. Để sử dụng PHP với Firebase, nó cung cấp một gói PHP hoàn chỉnh mà bạn có thể tích hợp để làm việc với Firebase. Trong ứng dụng này, tôi sẽ sử dụng kreait / firebase-php cũng được Firebase đề xuất.

Cách được đề xuất để cài đặt SDK quản trị Firebase là với Composer. Composer là một công cụ quản lý phụ thuộc cho PHP cho phép bạn khai báo các phụ thuộc mà dự án của bạn cần và cài đặt chúng vào dự án của bạn.

composer require kreait/firebase-php ^4.17.0

Ngoài ra, bạn có thể chỉ định SDK quản trị Firebase làm phần phụ thuộc trong tệp composer.json hiện có của dự án:

{

  "require": {

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

  }

}

Sau khi cài đặt, bạn cần yêu cầu trình tải tự động của Composer:

<?php

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

Tạo kết nối với Firebase

Sau khi hoàn tất cài đặt gói và thêm autolader vào tệp PHP, sau đó bạn có thể tạo kết nối với Firebase bằng cách sử dụng tệp bí mật được tải xuống từ bảng điều khiển. Bạn cần chuyển URL của tệp đó trong phương thức ServiceAccount ::fromJsonFile (). Thứ hai, tìm URL ứng dụng 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();

Bây giờ tại thời điểm này khi bạn thực hiện var_dump ($ database); bạn sẽ thấy đối tượng cơ sở dữ liệu hoàn chỉnh do Firebase trả về trên màn hình trình duyệt của bạn.

Tạo lớp người dùng trong Users.php

Điều tiếp theo tôi sẽ làm là tạo một tệp mới có tên là Users.php và khai báo một lớp Người dùng trong đó. Lớp này sẽ chứa một phương thức khởi tạo trong đó tôi sẽ tạo một kết nối của PHP với API Firebase và khởi tạo nó. Sau đó, tôi sẽ nhận được cơ sở dữ liệu được tạo trong firebase.

public function __construct(){

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

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

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

   }

Bây giờ để tạo các hàm CRUD trong PHP để thao tác với cơ sở dữ liệu, tôi sẽ tạo các phương thức riêng biệt cho từng trường hợp sử dụng. Nhưng trước tiên hãy tạo thêm hai thuộc tính bên ngoài hàm tạo chứa tên cơ sở dữ liệu

protected $database;

   protected $dbname = 'users';

Bây giờ, hãy tạo một phương thức get () để truy xuất dữ liệu. Nó sẽ chứa userID để tìm nạp bản ghi người dùng cụ thể. Phương pháp này cũng sẽ kiểm tra xem userID không có sẵn hoặc không được thiết lập, trong trường hợp đó sẽ trả về false. Trong khi nếu xác nhận ID được đặt thích hợp, sẽ truy xuất giá trị thành công.

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;

       }

   }

Bên trong phương thức insert (), tôi sẽ chuyển mảng dữ liệu vì nó có thể chứa một hoặc nhiều dữ liệu. Mặc dù nếu dữ liệu đã có sẵn cho userID cụ thể, nó sẽ cập nhật dữ liệu hiện 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;

   }

Bây giờ tôi sẽ tạo một hàm delete () sẽ có userID làm tham số. ID sẽ được xác thực nếu được đặt, sau đó phương thức remove () sẽ xóa dữ liệu.

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ớp Người dùng hoàn chỉnh sẽ như sau:

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

       }

   }

}



?>

Bây giờ chúng ta hãy kiểm tra lớp học. Cố gắng áp dụng các phương pháp và kiểm tra cơ sở dữ liệu Firebase có cập nhật hay không. Đầu tiên khởi tạo lớp:

$users = new Users();

Bây giờ, hãy chèn một số dữ liệu qua phương thức insert ():

$users = new Users();

//var_dump($users->insert([

//    '1' => 'John',

//    '2' => 'Doe',

//    '3' => 'Smith'

//]));

Tương tự, bạn có thể lấy hoặc xóa dữ liệu như sau:

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

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

Vì vậy, bạn có thể thấy cách tôi đã xây dựng một ứng dụng CRUD cơ bản bằng PHP và Firebase bằng cách tạo một lớp đơn giản. Rõ ràng là bạn có thể mở rộng nó và có thể tạo ra thứ gì đó thú vị theo yêu cầu.


Ít rắc rối hơn. Phát triển thêm.

Hãy để chúng tôi chứng minh các yêu cầu lưu trữ của bạn trong tương lai. Bạn tập trung vào việc xây dựng các ứng dụng của mình.

Bắt đầu miễn phí

Kết nối Firebase với Biểu mẫu liên hệ PHP

Biểu mẫu liên hệ là một thành phần thiết yếu của bất kỳ trang web nào vì nó tập hợp các thông điệp và truy vấn của người dùng. Hãy tạo một biểu mẫu liên hệ PHP đơn giản và kết nối nó với Firebase để nhận thông báo. Điều này sẽ bao gồm mã hóa cơ bản vì nó sẽ chỉ cho bạn ý tưởng về cách kết nối nó. Tôi sẽ sử dụng cùng một lớp User.php và hàm insert () của nó:

Mã thiết kế biểu mẫu liên hệ sẽ như sau:

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

Bây giờ trong tệp PHP, bạn có thể khởi tạo không gian tên và lớp Người dùng. Sau đó, chỉ cần bắt các đầu vào và gửi chúng đến phương thức insert () của Firebase. Ngoài ra, đây là mã cơ bản, bạn có thể mở rộng mã theo yêu cầu và quy tắc xác thực của mình:

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

   ]);



}

Lời cuối cùng

Công nghệ đang phát triển với tốc độ nhanh chóng. Để có thể cạnh tranh và ở trong cuộc đua, bạn phải cập nhật cho mình những thay đổi. Tương tự như vậy, cơ sở dữ liệu cũng đang phát triển thường xuyên và ngày nay chúng ta có thể thấy rất nhiều dịch vụ cung cấp cơ sở dữ liệu thời gian thực, xử lý dữ liệu nhanh chóng.

Trong ví dụ PHP Firebase này, tôi đã trình bày cho bạn cách tích hợp PHP với Firebase và kết nối nó với một biểu mẫu liên hệ với lớp đơn giản. Sau khi kết nối thành công, bạn có thể tạo các trường hợp sử dụng phức tạp hơn để sử dụng các dịch vụ Firebase. Tôi cũng sẽ viết thêm về Firebase với PHP sau.

Các câu hỏi thường gặp

H:Tôi có thể sử dụng Firebase với PHP không?

Đ:Có, Firebase cung cấp một API toàn diện để tích hợp nền tảng với các dự án PHP của bạn.

H:Tôi có thể lưu trữ PHP trên Firebase không?

Đ:Không, Firebase chỉ hỗ trợ lưu trữ tĩnh và do đó, bạn không thể lưu trữ các tập lệnh PHP trên Firebase.

H:Làm cách nào để lấy dữ liệu từ cơ sở dữ liệu Firebase bằng PHP?

Để lấy dữ liệu Firebase, bạn cần đi tới thư mục dự án và chạy lệnh:

php composer.phar require kreait/firebase-php

Tiếp theo, một index.php mới vào thư mục dự án và thêm dòng sau vào đầu index.php:

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

Tiếp theo, tạo tệp JSON trong thư mục

Chỉnh sửa index.php và tạo kết nối với cơ sở dữ liệu.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn Cơ sở dữ liệu:Làm thế nào để Tìm một kim trong Haystack?

  2. Các tính năng không được dùng nữa để đưa ra khỏi hộp công cụ của bạn - Phần 3

  3. Cơ sở dữ liệu quan hệ so với không quan hệ - Phần 1

  4. Cơ sở dữ liệu của bạn có được bảo mật không? Nghĩ lại

  5. Cách khai báo ngoại lệ do người dùng xác định bằng PRAGMA EXCEPTION_INIT