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:
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í .