Rumah >pembangunan bahagian belakang >tutorial php >Amalan seni bina perkhidmatan mikro PHP

Amalan seni bina perkhidmatan mikro PHP

王林
王林asal
2024-06-05 14:58:09697semak imbas

Amalan seni bina perkhidmatan mikro PHP: Pasang tindanan LEMP: Pasang Linux, Nginx, MySQL dan PHP. Cipta pangkalan data MySQL: Cipta pangkalan data untuk menyimpan data. Pasang Komposer: Gunakan Komposer untuk mengurus kebergantungan PHP. Bina perkhidmatan mikro: Gunakan Symfony untuk mencipta projek Komposer baharu dan konfigurasikan perkhidmatan. Cipta entiti: Tentukan entiti untuk pemetaan ke jadual pangkalan data. Cipta skema pangkalan data: Gunakan Doktrin untuk mencipta skema pangkalan data. Buat pengawal API: Pengawal yang mengendalikan permintaan pengguna. Menjalankan perkhidmatan mikro: Mulakan perkhidmatan mikro menggunakan pelayan terbina dalam PHP.

Amalan seni bina perkhidmatan mikro PHP

Seni Bina Perkhidmatan Mikro PHP dalam Amalan

Pengenalan
Perkhidmatan Mikro ialah gaya seni bina perisian yang memecahkan aplikasi kepada perkhidmatan bebas dan boleh skala. PHP ialah bahasa hujung belakang popular yang bagus untuk membina perkhidmatan mikro. Artikel ini akan membimbing anda melalui kes praktikal untuk menyelesaikan pembinaan seni bina perkhidmatan mikro PHP.

Pasang tindanan LEMP
Mula-mula, anda perlu memasang tindanan 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

Buat pangkalan data MySQL
Seterusnya, buat pangkalan data MySQLee untuk

Pasang Komposer
Komposer ialah alat pengurusan pergantungan PHP:

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

Membina perkhidmatan mikro
Seterusnya, buat projek Komposer baharu:

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

Tambah kandungan berikut pada config/codes >.yaml Fail: <code>config/services.yaml 文件:

composer create-project symfony/skeleton micro_services
cd micro_services

创建 src/Entity/User.php 实体,该实体映射到数据库中的用户表:

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')]]

运行以下命令来创建数据库模式:

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;

    // ...
}

创建 API 控制器
创建一个 API 控制器来处理用户请求:

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

运行微服务
最后,启动 PHP 内置服务器来运行微服务:

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

访问 http://localhost:8000/api/users

php -S localhost:8000 public/index.php

Buat entiti src/Entity/User.php, yang dipetakan ke jadual pengguna dalam pangkalan data: 🎜rrreee🎜Jalankan arahan berikut untuk mencipta skema pangkalan data: 🎜rrreee🎜🎜Buat Pengawal API 🎜🎜Buat pengawal API untuk mengendalikan permintaan pengguna: 🎜rrreee🎜🎜Jalankan perkhidmatan mikro🎜🎜Akhir sekali, mulakan pelayan terbina dalam PHP untuk menjalankan perkhidmatan mikro: 🎜rrreee🎜Lawati http://localhost:8000 /api /users untuk mendapatkan senarai pengguna. 🎜

Atas ialah kandungan terperinci Amalan seni bina perkhidmatan mikro PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn