Maison > cadre php > Laravel > le corps du texte

Partagez votre expérience et test de résistance sur laravel-octane

藏色散人
Libérer: 2021-06-11 09:01:53
avant
3487 Les gens l'ont consulté

Ce qui suit est une introduction à l'expérience laravel-octane et au test de stress de la colonne tutorielle laravel. J'espère que cela sera utile aux amis dans le besoin !

laravel-octane doivent être exécutés au-dessus de php8, mais le Mamp local est le plus élevé toujours php7, donc je ne peux utiliser docker que pour courir.

Créez un conteneur

Ouvrez un docker répertoire de travail localement pour faciliter le mappage et l'édition du code du projet.

mkdir ~/workspace/docker/ -p && cd ~/workspace/docker/

docker run -it --name php8 \
-v "$PWD":/exports/apps \
-w /exports/apps --entrypoint="/bin/bash" \
-p 8081:8081 \
php:8.0.3-cli
Copier après la connexion

Utilisez swoole ici pour la bénédiction, roadrunner n'a pas été utilisé auparavant, nous en reparlerons plus tard.

Déploiement de conteneurs

组件、依赖都在容器中解决

# 登录容器
docker exec -it php8 /bin/bash
Copier après la connexion
rrree
Installer composer
# 不更新拉不到安装包 fk
apt-get update && apt-get upgrade
apt-get install libzip-dev
apt-get install apache2-utils
apt-get install net-tools
apt-get install inetutils-ping

# 热加载用的 node chokidar 需要话可以安装npm
apt-get install nodejs npm
npm config set registry https://registry.npm.taobao.org

# 在拉取 composer 包时需要 否则用 git 去拉源码那叫一个慢哟
pecl install zip
pecl install swoole
echo extension=zip.so >> /usr/local/etc/php/conf.d/docker-php-ext-sodium.ini
echo extension=swoole.so >> /usr/local/etc/php/conf.d/docker-php-ext-sodium.ini

# 安装 pcntl octane 信号通信需要
docker-php-ext-install pcntl
docker-php-ext-install pdo_mysql

php -m
Copier après la connexion
Créer Laravel && octane
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
composer --version
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
Copier après la connexion
Démarrer le service

--watch

composer create-project laravel/laravel --prefer-dist -vvv laravel_octane
cd laravel_octane

# 安装 octane
composer require laravel/octane
php artisan octane:install

php artisan key:generate

# .env
# 数据库我用的宿主机的
# mac 容器访问宿主机 mysql 使用 docker.for.mac.host.internal 即可
DB_CONNECTION=mysql
DB_HOST=docker.for.mac.host.internal
DB_PORT=3306
DB_DATABASE=laravel_octane
DB_USERNAME=root
DB_PASSWORD=123456
Copier après la connexion
#需要热加载 --watch 请安装 npm && chokidar
npm install chokidar
Copier après la connexion
Test d'accès
php artisan octane:start --host="0.0.0.0" --port=8081 --workers=4 --max-requests=10000 --task-workers=10
Copier après la connexion
Code du test de stress

Vous pouvez l'obtenir vous-même

app/Http/Kernel.php 注释掉 throttle:api

curl -XGET http://127.0.0.1:8081/
Copier après la connexion

routes/api.php

        'api' => [
            // 'throttle:api',
            // \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],
Copier après la connexion

app/Http/Controllers/IndexController.php

Route::any('/db', [\App\Http\Controllers\IndexController::class, 'db']);
Copier après la connexion

app/Models/Test.php

<?php

namespace App\Http\Controllers;

use App\Models\Test;
use Illuminate\Http\Request;

class IndexController extends Controller
{
    public function db()
    {
        $nameList  = [&#39;james&#39;, &#39;lucy&#39;, &#39;jack&#39;, &#39;jessica&#39;, &#39;lily&#39;];
        $hobbyList = [&#39;football&#39;, &#39;basketball&#39;, &#39;swimming&#39;];

        $name  = $nameList[array_rand($nameList)];
        $hobby = $hobbyList[array_rand($hobbyList)];

        if (mt_rand(0, 5) >= 2) {// 0-1读 2-5写
            $test        = new Test();
            $test->name  = $name;
            $test->age   = 18;
            $test->sex   = 1;
            $test->hobby = $hobby;
            $test->save();
            $data = ['id' => $test->id];
        } else {
            $data = Test::query()->where('hobby', $hobby)->first();;
        }

        return $data;
    }
}
Copier après la connexion

sql

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

/**
 * Class Test
 *
 * @package App\Models
 * @property int id
 * @property string name
 * @property int age
 * @property string sex
 * @property string hobby
 */
class Test extends Model
{
    use HasFactory;

    /**
     * @var string
     */
    protected $table = 'test';

    const CREATED_AT = null;
    const UPDATED_AT = null;
}
Copier après la connexion

Résultat du test de stress

Le résultat est que j'ai quelques doutes sur moi-même, donc je ne le publierai pas pour l'instant, afin que chacun puisse le tester par lui-même.


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal