首頁  >  文章  >  後端開發  >  PHP微服務架構實戰

PHP微服務架構實戰

王林
王林原創
2024-06-05 14:58:09622瀏覽

PHP 微服務架構實戰:安裝 LEMP 堆疊: 安裝 Linux、Nginx、MySQL 和 PHP。建立 MySQL 資料庫: 建立用於儲存資料的資料庫。安裝 Composer: 使用 Composer 管理 PHP 相依性。建構微服務: 使用 Symfony 建立一個新的 Composer 專案並配置服務。建立實體: 定義用於對應到資料庫表的實體。建立資料庫模式: 使用 Doctrine 建立資料庫模式。建立 API 控制器: 處理使用者要求的控制器。執行微服務: 使用 PHP 內建伺服器啟動微服務。

PHP微服務架構實戰

PHP 微服務架構實戰

「簡介
微服務是一種軟體架構風格,將應用程式分解成獨立且可伸縮的服務。 PHP 是一種流行的後端語言,非常適合建立微服務。本文將透過一個實戰案例,引導你完成 PHP 微服務架構的建構。

安裝LEMP 堆疊
首先,需要安裝LEMP(Linux、Nginx、MySQL、PHP)堆疊:

# Ubuntu/Debian
sudo apt update && sudo apt install nginx mysql-server php8.1

# CentOS/Fedora
sudo yum update && sudo yum install epel-release
sudo yum install nginx mariadb php81

建立MySQL 資料庫
接下來,建立一個用於儲存資料的MySQL 資料庫:

CREATE DATABASE micro_services;
GRANT ALL PRIVILEGES ON micro_services.* TO 'user'@'localhost' IDENTIFIED BY 'password';

安裝Composer
Composer 是PHP 依賴項管理工具:

sudo curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

建置微服務
接下來,建立一個新的Composer 專案:

composer create-project symfony/skeleton micro_services
cd micro_services

新增以下內容到config/services.yaml 檔案:

services:
    database.connection: # 数据库连接
        class: Doctrine\DBAL\Connection
        arguments:
            dsn: '%env(DATABASE_URL)%'
    monolog.logger: # 日志记录器
        class: Monolog\Logger
        arguments: [micro_services]
        calls:
            - [pushHandler, [new Monolog\Handler\StreamHandler('logs/dev.log')]]

建立src/Entity/User.php 實體,該實體會對應到資料庫中的使用者表:

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="users")
 */
class User
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=255)
     */
    private $email;

    // ...
}

執行下列指令來建立資料庫模式:

composer dump-autoload &&
php bin/console doctrine:database:create

建立API 控制器
建立一個API 控制器來處理使用者請求:

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Doctrine\ORM\EntityManagerInterface;

class UserController extends AbstractController
{
    /**
     * @Route("/api/users", methods={"GET"})
     */
    public function index(EntityManagerInterface $em): Response
    {
        $users = $em->getRepository(User::class)->findAll();

        return $this->json($users);
    }
}

運行微服務
最後,啟動PHP 內建伺服器來執行微服務:

php -S localhost:8000 public/index.php

造訪http://localhost:8000/api/users 即可取得使用者清單。

以上是PHP微服務架構實戰的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn