¿Cómo reducir el período de tiempo de exploración Hyperf

 

razón

Hyperf Marco para evitar que el usuario los componentes de actualización, caché de proxy no conduce a iniciar el error de actualización. Ha añadido la siguiente gancho.

{
    "scripts": {
        "post-autoload-dump": [
            "init-proxy.sh"
        ]
    }
}

La  init-proxy.sh secuencia de comandos se ejecutará  php bin/hyperf.php di:init-proxy el comando proxy caché limpiar y reconstruir.

$ composer init-proxy
> init-proxy.sh
../../
Runtime cleared
Scanning app ...
Scan app completed, took 195.76692581177 milliseconds.
Scanning vendor ...
Scan vendor completed, took 510.0839138031 milliseconds.
This command does not clear the runtime cache, If you want to delete them, use `vendor/bin/init-proxy.sh` instead.
Proxy class create success.
Finish!

La demostración anterior, podemos ver claramente el tiempo que sea necesario, ahora menos  1s , de hecho, también puede ser aceptado. Pero si el modelo es muy grande, esta vez puede ser un punto de insoportable. Por ejemplo, los siguientes casos.

$ composer init-proxy
> init-proxy.sh
../../
Runtime cleared
Scanning app ...
Scan app completed, took 3063.5998249054 milliseconds.
Scanning vendor ...
Scan vendor completed, took 490.39006233215 milliseconds.
This command does not clear the runtime cache, If you want to delete them, use `vendor/bin/init-proxy.sh` instead.
Proxy class create success.
Finish!

soluciones

 

La siguiente solución se basa en el uso correcto del modelo. Por ejemplo, no utilice la anotación del modelo. enfoque de detección es generar lo que el caso no excluye el modelo caché proxy de directorio para ver si la generación Modelo agencia relacionada.

Por lo tanto, podemos tomar la iniciativa para modificar el  Hyperf marco directorio de exploración, excluya el modelo de directorio. Vamos a escribir una modificación lógica  annotations.php.

<?php

declare(strict_types=1);

use Symfony\Component\Finder\Finder;

return [
    'scan' => [
        'paths' => value(function () {
            $paths = [];
            $dirs = Finder::create()->in(BASE_PATH . '/app')
                ->depth('< 1')
                ->exclude(['Model']) // 此处按照实际情况进行修改
                ->directories();
            /** @var SplFileInfo $dir */
            foreach ($dirs as $dir) {
                $paths[] = $dir->getRealPath();
            }
            return $paths;
        }),
        'ignore_annotations' => [
            'mixin',
        ],
    ],
];

Cuando vuelva a ejecutar el comando, se encuentra tiempo para ser acortado significativamente.

Escrito en los últimos

 

Hyperf Swoole 4.4+ lograr un alto rendimiento, alta flexibilidad marco de PHP corrutina, y un gran número de componentes comunes incorporados corrutina servidor, el rendimiento cualitativo basado en marco más tradicional de elevación PHP-FPM, al tiempo que proporciona muy alta Basado , también mantuvo un extremadamente flexible y escalable, componentes estándar se basan en PSR implementación estándar, el diseño se basa en la inyección de una dependencia fuerte, para asegurar que la gran mayoría de los componentes o clases son reemplazables y reutilizable.

 

Marco de la biblioteca de componentes además de la versión habitual corrutina cliente de MySQL, el cliente Redis, también se puede disfrutar de una versión de la corrutina elocuente ORM, servidor de WebSocket y el cliente, el servidor JSON RPC y el cliente, el servidor y el cliente GRPC final, Zipkin / Jaeger (OpenTracing) cliente, Guzzle HTTP cliente, el cliente elasticsearch, cliente Consul, cliente ETCD, componentes AMQP, centro de distribución Apolo, gestión Ali nube ACM aplicación de configuración, el centro de distribución ETCD, basado en el cubo simbólico fluya algoritmo limitador, piscina conexión universal, fusibles, la generación de documentos Swagger, Swoole Tracker, Blade y vista motor de Smarty, generador de identificación global del copo de nieve y otros componentes, eliminando el problema de su propia para lograr la versión correspondiente de la co-rutina.

 

Hyperf también proporcionado en el recipiente en base a los PSR-11 dependientes, anotaciones, el AOP Programación Orientada, basado en el PSR-15 intermedio, procesos personalizados, el gestor de eventos basado en el PSR-14, cola de mensajes Redis / RabbitMQ, caché modelo automatizado una característica muy conveniente, sobre la base de la memoria intermedia PSR-16, la tarea segundo tiempo el nivel Crontab, - Search.com internacionalización, la verificación de validación, etc., para satisfacer la gran cantidad de escena escenario técnico y de negocios, fuera de la caja.

Obtenga más información, visite:

Tencent T3-T4 Boutique estándar directorio Arquitecto tutorial Daquan PHP, siempre y cuando se lee el pago de garantía se eleva a un nivel superior (actualizado continuamente)

Por encima de la esperanza de ayudar a todos, muchas Phper siempre encontrar algunos problemas y cuellos de botella en el momento avanzada, escribir más código de negocio sin sentido de dirección, no sé por dónde empezar a subir, lo que he recopilado algunos datos, incluyendo pero no limitado a: una arquitectura distribuida, altamente escalable, de alto rendimiento, de alta concurrencia, el ajuste del rendimiento del servidor, TP6, laravel, YII2, Redis , Swoole, Swoft, Kafka, Mysql optimización, secuencias de comandos shell, estibador, micro-servicios, Nginx, etc. más avanzados conocimientos requeridos para los productos avanzados secos puede ser libre para que todos puedan compartir , es necesario añadir a mi grupo oficial aquí .

Publicados 265 artículos originales · ganado elogios 36 · Vistas a 10000 +

Supongo que te gusta

Origin blog.csdn.net/weixin_43814458/article/details/105365128
Recomendado
Clasificación