La Red de Conocimientos Pedagógicos - Currículum vitae - ¿Cuál es la ruta de aprendizaje para los principiantes en PHP?

¿Cuál es la ruta de aprendizaje para los principiantes en PHP?

La primera etapa: ¿etapa básica (programador PHP básico)?

Enfoque: ¿volverse competente en LNMP (el núcleo son las operaciones básicas de instalación y configuración)? Objetivo: poder completar el sistema LNMP básico Instalación, configuración y mantenimiento simples; capaz de realizar desarrollo PHP básico de sistemas simples; capaz de soportar el desarrollo de un determinado módulo de funciones PHP en un sistema PHP de tamaño mediano; ?

Tiempo: El tiempo para completar esta etapa varía de persona a persona. Algunas crecen más rápido que medio año y otras crecen lentamente en dos o tres años. ?

Linux ?

Comandos básicos, operaciones, inicio, configuración básica de servicios (incluidos archivos de instalación rpm, varias configuraciones de servicios, etc.); puede escribir scripts de shell simples y awk/sed; Comandos de script, etc. ?

Nginx ?

Poder instalar y configurar nginx php, conocer las opciones de configuración básicas del núcleo de nginx y conocer configuraciones básicas como server/fastcgi_pass/access_log. hacer que nginx php_fpm funcione sin problemas. ?

MySQL ?

Poder construir mysql usted mismo y conocer las opciones básicas de configuración de mysql; conocer la diferencia entre innodb y myisam, y conocer las diferentes opciones de configuración para InnoDB y Motores MyISAM; conozca las diferencias básicas entre los dos motores y las diferencias en la selección anterior; poder compilar y construir una base de datos MySQL puramente a mano y configurar la codificación para que se ejecute de manera normal y estable; una base de datos MySQL ejecutable. ?

PHP ?

Sintaxis básica para matrices, cadenas, bases de datos, XML, Socket, procesamiento de imágenes GD/ImageMgk, etc. familiarizado con varias API vinculadas a operaciones MySQL (mysql/ mysqli/PDO), saber cómo resolver varios problemas de codificación; conocer los marcos PHP de uso común (ThinkPHP, Zendframework, Yii, Yaf, etc.); comprender el mecanismo operativo básico de MVC y por qué se hace, y conocer un poco sobre el diferencias entre diferentes frameworks PHP La diferencia es poder aprender rápidamente un framework MVC. Ser capaz de comprender la organización del directorio de archivos en el proyecto de desarrollo, tener una buena estructura y estilo de código básico y poder completar el desarrollo de sistemas pequeños y el desarrollo de un determinado módulo en un sistema mediano.

¿Front-end?

Si el tiempo lo permite, puede aprender HTML/CSS/JS y otros conocimientos relacionados, saber qué estándares web, modo de página web/wap div css, conocer HTML5. La diferencia con HTML4; comprender algunos marcos front-end y JS básicos (jQuery y similares); comprender algunos conocimientos básicos de programación de JavaScript (este elemento no es necesario. Si tiene tiempo, está bien aprender un poco al respecto; , pero no se recomienda como enfoque, a menos que exista un fuerte interés personal). ?

¿Diseño del sistema?

Poder completar el diseño básico de sistemas pequeños, incluido el diseño simple de bases de datos, y poder completar lo básico: browser-gt; Nginx PHP-gt; arquitectura de base de datos Trabajo de diseño y desarrollo capaz de soportar el desarrollo y mantenimiento de sitios web con cientos de miles a millones de tráfico cada día;

Segunda etapa: etapa de mejora (programador PHP intermedio)?

Puntos clave: Mejorar las habilidades de LNMP y poder aplicar LNMP de manera más completa y competente. ?Objetivo: ser capaz de configurar un entorno LNMP en cualquier momento y en cualquier lugar y completar la configuración de rutina rápidamente; ser capaz de rastrear y resolver la mayoría de los problemas del entorno en línea y de desarrollo; ser capaz de realizar de forma independiente el trabajo de arquitectura y desarrollo de sistemas de tamaño mediano; Capaz de acometer determinadas tareas en grandes sistemas. Desarrollo de módulos de tamaño medio.

?

1. Linux ?

Sobre la base de la primera etapa, puedo usar scripts de Shell sin problemas para completar muchas tareas automatizadas; awk/sed/perl también funciona bien. completar una gran cantidad de procesamiento de texto y estadísticas de datos; básicamente es capaz de instalar la mayoría de los programas de Linux no especiales (incluidas varias bibliotecas, paquetes, dependencias de terceros, etc., como MongoDB/Redis/Sphinx/Luncene/SVN, etc.) Comprender los servicios básicos de Linux, saber cómo ver los datos del indicador de rendimiento de Linux y conocer el seguimiento de problemas básicos en Linux, etc. ?

2. Nginx ?

Basado en la primera etapa, comprenda la configuración más compleja de Nginx, incluida la configuración de múltiples núcleos, eventos, proxy_pass, configuración sendfile/tcp_* y tiempo de espera. y otras configuraciones relacionadas e impactos en el rendimiento, sepa que además del servidor web, nginx también puede realizar configuraciones de servidor proxy, servidor estático inverso y saber cómo configurar permisos y compilar una extensión de nginx para nginx; Principios operativos básicos de nginx (mecanismo maestro/trabajador, epoll), conocimiento de por qué el rendimiento de nginx es mejor que el rendimiento de apache, etc. ?

3. MySQL/MongoDB ?

Basado en la primera etapa, domine muchos consejos en el desarrollo de MySQL, incluida la optimización SQL regular (agrupar por/ordenar por/optimización rand, etc. ); además de poder compilar MySQL, también puede realizar copias de seguridad en frío y en caliente de los datos de MySQL. También conoce las opciones de configuración que afectan el rendimiento de innodb/myisam (como key_buffer/query_cache/sort_buffer/innodb_buffer_pool_size/innodb_flush_log_at_trx_commit, etc. ), y también sabe para qué valores están configuradas estas opciones. También comprende algunas opciones de configuración especiales, como: saber cómo configurar un entorno de sincronización maestro-esclavo de mysql, conocer la diferencia entre varios binlog_format; conocer el seguimiento del rendimiento de MySQL, incluido slow_log/explain, etc., y también conocer el procesamiento básico de creación de índices, etc. Conocimiento de la arquitectura básica de MySQL (motor de almacenamiento del servidor) en términos de principios, conocer el índice básico de InnoDB/MyISAM; estructura de almacenamiento y diferencias (índice agrupado, árbol B) conocer el mecanismo básico de procesamiento de transacciones de InnoDB comprender la mayoría de las soluciones de excepciones de MySQL (o saber dónde encontrar una); Si las condiciones lo permiten, se recomienda conocer la base de datos MongoDB, que es un representante de NoSQL, y comparar las diferencias con MySQL. Los colegas pueden usar MongoDB de manera segura y prudente en escenarios de aplicación adecuados, y conocer el desarrollo combinado básico de PHP y MongoDB. . ?

4. Redis/Memcached ?

El procesamiento de caché definitivamente estará involucrado en la mayoría de los sistemas de tamaño mediano, por lo que debe comprender el almacenamiento en caché básico y conocer las similitudes, diferencias y aplicaciones de Memcached; y Redis Scenario, poder instalar Redis/Memcached de forma independiente, comprender algunas características y limitaciones básicas de Memcached, como el valor máximo, y saber cómo combinar PHP con su uso, comprender los principios básicos de funcionamiento y el uso de Redis, comprender lo convencional; tipos de datos y saber qué escenarios se utilizan, qué tipo, comprender las transacciones de Redis, etc.

En la parte principal, puede tener una comprensión aproximada de la estructura de memoria de Memcached (el mecanismo de losa comprende la estructura de almacenamiento de implementación subyacente de tipos de datos comunes (SDS/lista vinculada/SkipList/HashTable), etc. Por cierto, Puede obtener más información sobre las transacciones de Redis, RDB, AOF y otros mecanismos.

5. ¿PHP?

Además de las capacidades de la primera etapa, en términos de instalación y configuración, puede instalar libremente la configuración de compilación e instalación de PHP y varios terceros. extensiones; comprender la mayoría de las opciones y significados de configuración de php-fpm (como max_requests/max_children/request_terminate_timeout y otras configuraciones que afectan el rendimiento), conocer la diferencia entre mod_php/fastcgi y dominar varias tecnologías básicas en PHP, incluidas varias más en; -PHP profundo, incluido PHP Comprensión profunda de las características orientadas a objetos/SPL/especiales a nivel de sintaxis, como la reflexión en términos de marcos, he leído el código de al menos un marco PHP MVC convencional y conozco su interior; Mecanismo de implementación e ideas de diseño del marco PHP básico en el desarrollo de PHP. Ha podido utilizar hábilmente patrones de diseño convencionales para el desarrollo de aplicaciones (se recomienda fábrica abstracta/caso único/observador/cadena de comandos/estrategia/adaptador); desarrolle su propio marco PHP MVC para liberalizar completamente el desarrollo y permitirle comprenderlo en profundidad. El modelo MVC también le permite actualizar rápidamente en el desarrollo de proyectos comerciales, familiarizarse con varios métodos de optimización de código de PHP y familiarizarse con la resolución de la mayoría de los problemas de seguridad de PHP; estar familiarizado con los principios básicos del mecanismo de ejecución de PHP (trabajo básico del motor Zend/mecanismo de extensión).

6. ¿C/C?

Comenzar a incursionar en un determinado lenguaje C/C, ser capaz de escribir código C/C básico y estar familiarizado con la sintaxis básica de C/C. (punteros, operaciones de matrices, cadenas, API estándar general) y estructuras de datos (listas vinculadas, árboles, hashes, colas) tener una comprensión básica de los conceptos de desarrollo del lenguaje C en Linux, poder escribir archivos MAKE simples y poder; utilizar la compilación de programas GCC/GDB simple y el trabajo de depuración simple; tener una comprensión general de la programación básica de la red; (Este artículo es para sentar las bases para un nivel superior). ?

7. ¿Front-end?

Basado en la primera etapa, familiarícese con el protocolo HTTP básico (código de protocolo 200/300/400/500, encabezado de interacción HTTP básico). Si las condiciones lo permiten, puede escribir HTML CSS JavaScript más elegante en profundidad, o simplemente puede usar algunos marcos front-end (jQuery/YUI/ExtJS/RequireJS/BootStrap, etc.) si las condiciones lo permiten, puede aprender a programar JavaScript; en profundidad, como el mecanismo de paquete cerrado, el procesamiento DOM, si desea profundizar, puede leer el código fuente de jQuery para un estudio en profundidad; (Este artículo no es un estudio clave a menos que esté interesado en el front-end).

8. ¿Diseño del sistema?

Ser capaz de diseñar la arquitectura del sitio web, la base de datos y la selección del marco PHP básico para la mayoría de los sistemas de tamaño mediano, realizar pruebas de rendimiento y resolución de problemas, etc.; poder completar tareas tales como: navegador-gt; CDN (Squid) -gt; Nginx PHP -gt; Diseño básico, desarrollo y mantenimiento de sitios web con estructura de bases de datos capaces de soportar el desarrollo y mantenimiento de sitios web básicos; ¿De millones a decenas de millones de tráfico cada día?

La tercera etapa: ¿Etapa avanzada (programador PHP senior)?

Puntos clave: además del programa LNMP básico, puede también tener un aprendizaje profundo en una determinada dirección o campo. (Desarrollo de dimensión profunda) Objetivo: además de poder completar el desarrollo empresarial PHP básico, también puede resolver los problemas técnicos más profundos y complejos, y puede diseñar y completar de forma independiente el trabajo de diseño y desarrollo de sistemas a mediana y gran escala; puedes tener de forma independiente un conocimiento profundo de una determinada tecnología. La dirección es bastante profesional en esta área.

(Por ejemplo, investigación en profundidad en cualquier dirección, como MySQL, Nginx, PHP, Redis, etc.)

1. ¿Linux?

Además de las capacidades de la segunda etapa, además de las operaciones regulares en Linux y el monitoreo y seguimiento del rendimiento, también puedo usar muchos comandos avanzados y complejos para completar el trabajo (watch/tcpdump/starce/ldd/ar, etc.) capaz de escribir scripts de shell relativamente complejos (más de 500 líneas) para ayudar a completar muchas tareas, incluidos shells para copias de seguridad, procesamiento automatizado, monitoreo, etc., se ha vuelto competente en aplicaciones como awk/sed/perl y puede operar libremente. , control, procesamiento, estadísticas de texto y análisis de datos en varios formatos complejos. Tiene cierta comprensión de los mecanismos internos de Linux y tiene una buena comprensión de los mecanismos internos de Linux. Hay procesamiento básico de la carga del módulo del kernel, manejo de errores de inicio, etc. ; al mismo tiempo, también entendemos algunas otras cosas relacionadas, como NFS, administración de discos, etc. ?

2. , He podido operar Nginx de manera muy competente y puedo realizar trabajos de operación y mantenimiento más profundos en Nginx, como monitoreo, optimización del rendimiento, procesamiento de problemas complejos, etc., según los intereses personales, se pueden considerar más aspectos en los que considerar centrarse; estudio en profundidad del principio de funcionamiento de Nginx, comenzando principalmente con la lectura del código fuente, como el mecanismo de trabajo maestro / trabajador específico, el procesamiento de eventos internos de Nginx, la administración de memoria, etc., al mismo tiempo, puede aprender el desarrollo; de las extensiones de Nginx y personalizar algunas extensiones privadas propias al mismo tiempo, puede tener un cierto grado de comprensión de Nginx Lua para ver si se puede combinar y aplicar para crear un mejor modelo; el requisito en esta etapa es un Una comprensión profunda de los principios de Nginx le permitirá considerar convertirse en un profesional profundo en la dirección de Nginx. ?

3. MySQL/MongoDB

Basado en la segunda etapa, en términos de aplicaciones MySQL, además de la optimización básica de SQL anterior, también puede completar algunas operaciones complejas, como como operaciones a gran escala, como importar y exportar datos por lotes, cambiar estructuras de tablas o agregar o eliminar campos de índice para grandes lotes de datos en línea, además de la instalación y configuración, ha podido manejar MySQL más complejo; Para el nivel de aplicación MySQL, están involucrados problemas como el seguimiento de varios problemas y retrasos en la sincronización maestro-esclavo, soluciones de sincronización de datos entre salas de computadoras, arquitectura de alta disponibilidad de MySQL, etc. tecnologías de MySQL, como mecanismos de transacción (niveles de aislamiento, bloqueos, etc.), activadores y particiones. Tener cierta comprensión y aplicación de otras tecnologías para el rendimiento de MySQL, incluida la optimización del disco (migración de SAS a SSD), la optimización del servidor ( memoria, configuración del servidor en sí), otras opciones principales de optimización del rendimiento además de la segunda etapa (innodb_log_buffer_size/back_log/table_open_cache/ thread_cache_size/innodb_lock_wait_timeout, etc.), aplicación de selección de software del grupo de conexiones, tiene un conocimiento profundo de declaraciones de operación como show * (mostrar estado/mostrar perfil) y puede completar la mayoría de los problemas de rendimiento con un conocimiento profundo de la tecnología de respaldo MySQL, incluida la recuperación y recuperación ante desastres, una comprensión profunda de Binlog, respaldo en frío y en caliente, respaldo multi-IDC, etc. .; tener una mejor comprensión de los principios de MySQL, como comenzar a leer algunos códigos fuente para el mecanismo de trabajo de MySQL, como aprender el código fuente de la tecnología de sincronización (replicación) maestro-esclavo, o aprender y comprender el código fuente de un cierto motor de almacenamiento (MyISAM/Innodb/TokuDB), etc. Si las condiciones lo permiten, puede consultar el motor CSV para desarrollar su propio motor de almacenamiento simple para guardar algunos datos y mejorar su comprensión de MySQL durante este proceso, si es así; Si está interesado, también puede considerar convertirse en un DBA.

A nivel de MongoDB, puede considerar, por ejemplo, comenzar a aplicar MongoDB en línea cuando escriba menos y lea más, o realice algunas operaciones de análisis y procesamiento de datos en línea. Los escenarios específicos pueden basarse en el trabajo, pero el núcleo es tener. Una comprensión mejor y más profunda de RMDBS Para aplicaciones en diferentes escenarios de NoSQL, si las condiciones o los intereses lo permiten, puede comenzar a aprender más sobre el mecanismo de trabajo de MongoDB. ?

4. Redis/Memcached ?

Sobre la base de la segunda etapa, se puede lograr una aplicación y un aprendizaje más profundos. Debido a que Memcached no es particularmente complejo, se recomienda leer el código fuente, especialmente la parte de administración de memoria, para facilitar una comprensión profunda. En la parte de Redis, puede realizar aplicaciones de estructura de datos más complejas (zset se usa para operaciones de clasificación; /procesamiento de transacciones para garantizar que Atomicity se utilice en aplicaciones de escenarios de venta flash); implica principalmente aprender aplicaciones de mecanismos de sincronización como aof y diseñar una arquitectura y un clúster de aplicaciones Redis de alta disponibilidad; se recomienda estudiar el código fuente de Redis en; Profundice y colóquelo en la segunda etapa. El conocimiento acumulado se puede aplicar. En particular, puede leer sobre gestión de eventos centrales, gestión de memoria, estructura de datos centrales internos, etc., para comprenderlo completamente. Si tu interés lo permite, puedes convertirte en un usuario muy profesional de Redis. ?

5. PHP ?

Como habilidad básica, necesitamos un estudio y una aplicación más profundos basados ​​en la segunda etapa. En términos de aplicación de código básico, puede resolver el 95% de los problemas encontrados en el desarrollo de PHP y comprender la mayoría de las técnicas de PHP; puede comenzar a usar rápidamente la mayoría de los marcos de PHP en un día y comprender las ventajas y desventajas de cada marco de PHP convencional. en términos de configuración, puede seleccionar de manera rápida y conveniente la tecnología en el desarrollo del proyecto. Además del conocimiento de la segunda etapa normal, también comprenderá algunas opciones de configuración más oscuras (php auto_prepend_file/auto_append_file), incluidas algunas configuraciones avanzadas complejas; Extensiones Principios (como memcache.hash_strategy en la configuración de la extensión memcached, apc.mmap_file_mask/apc.slam_defense/apc.file_update_protection en la configuración de la extensión apc, etc.); php-fpm (como php -fpm permite el cálculo del número de proceso y los principios en máquinas con diferentes configuraciones), tiene familiaridad básica con el motor Zend (procesamiento vm/gc/stream), ha leído el código fuente básico del kernel PHP (o ha leído información relacionada). artículos), y tiene conocimiento de los mecanismos internos de PHP. Tiene una comprensión de la implementación de la mayoría de las estructuras de datos centrales (tipos básicos/Array/Objeto), y tiene una comprensión profunda de la infraestructura central (zval/hashtable/gc). ; ser capaz de realizar desarrollo básico de extensiones PHP y comprender algunos conocimientos intermedios y avanzados de desarrollo de extensiones (minit/rinit, etc.), estar familiarizado con los detalles de los diferentes métodos de comunicación e interacción entre PHP y Apache/nginx (mod_php/); fastcgi); además de desarrollar extensiones PHP, puedes considerar aprender a desarrollar extensiones Zend para comprender PHP desde un nivel inferior.

6. ¿C/C?

A partir de la segunda etapa, podrás tener una comprensión más profunda del lenguaje C/C y completar el desarrollo de las pequeñas y medianas empresas. Trabajo de desarrollo de sistemas C/C; además de la sintaxis básica de C/C y las estructuras de datos en la segunda etapa, también puede aprender algunas estructuras de datos especiales (b-tree/rb-tree/skiplist/lsm-tree/trie-. árbol, etc.) para facilitar el trabajo especial Requisitos: en términos de programación de sistemas, estar familiarizado con la programación multiproceso y multiproceso, comprender la mayoría de los métodos de comunicación entre múltiples procesos en situaciones de múltiples procesos y ser capaz de hacerlo de manera flexible; elija métodos de comunicación (memoria compartida/semáforo/canalización, etc.); más La programación de subprocesos puede resolver problemas de conflictos de bloqueo y puede desarrollar y depurar programas de subprocesos múltiples al mismo tiempo. Está familiarizado con la programación de redes y comprende las diferencias; selecciones de modelos multiproceso/modelos multiproceso/modelos de IO de red asíncrono, y está familiarizado con diferentes asíncronos Los principios y diferencias de los modelos de IO de red (select/poll/epoll/iocp, etc.), y está familiarizado con marcos asíncronos comunes (ACE/ICE/libev/libevent/libuv/Boost.ASIO, etc.) y sus usos. Si tiene tiempo libre, también puede echar un vistazo a algunas bibliotecas de desarrollo propio (como muduo); tiempo, ser capaz de diseñar una buena arquitectura de programa de alta concurrencia (líder-seguidor/maestro-trabajador, etc.) comprender la mayoría de los problemas en el desarrollo del servidor back-end C/C (administración de memoria, impresión de registros, alta concurrencia, front-end); -protocolos de comunicación de extremo y back-end, monitoreo de servicios), conocer los problemas de comunicación RPC de cada servicio de back-end (struct/http/thirft/protobuf, etc.) estar más familiarizado con el uso de GCC y GDB para desarrollar compilación y depuración; programas y núcleos de programas en línea Los problemas se pueden rastrear y resolver rápidamente después de eliminarlos; en términos de desarrollo general de módulos, se pueden acumular o desarrollar algunas herramientas o bibliotecas generales (como marcos de red asincrónicos, bibliotecas de registros, grupos de memoria, grupos de subprocesos, etc.), pero debe tener cuidado de aplicarlos después del desarrollo y ahorrar dinero cavando agujeros para perseguir errores. ?

7. Front-end?

Comprensión profunda del protocolo HTTP (incluido cada protocolo detallado, código de protocolo especial y las razones detrás de él, como 302 archivos estáticos). almacenado en caché, 502 es la razón por la cual php detrás de nginx cuelga la clase); además de las capacidades de integración de aplicaciones front-end anteriores de varios marcos, si está interesado en aprender el aspecto front-end, puede profundizar en la forma. desarrollar usted mismo algunos marcos de interfaz de usuario similares a jQuery o desarrollar un editor de texto enriquecido. Las clases son relativamente triviales y ponen a prueba las habilidades de JavaScript.

8. ¿Aprendizaje de idiomas en otros campos?

Tiene una acumulación básica en el lenguaje PHP/C/C básico. Se recomienda que intente aprender diferentes lenguajes de programación en la actualidad. etapa, dependiendo de sus intereses personales, como pasatiempo, puede aprender lenguajes de programación como Python/Ruby, lenguajes de programación funcionales como Lisp/Haskell/Scala/Erlang, lenguajes estáticos como Java/Golang y estadísticas de datos. Análisis como el lenguaje R. Si desea hacer negocios de back-end desde una perspectiva diferente, puede probar Node.js y el Nginx_Lua mencionado anteriormente combinado con Nginx, etc. Aprender diferentes idiomas es principalmente para mejorar su propia visión y las diferencias en los métodos de resolución de problemas. Por ejemplo, comprenderá que además de los procesos/hilos, también existen corrutinas ligeras, por ejemplo, en escenarios de comunicación entre máquinas; , la solución de Erlang es sorprendentemente simple; por ejemplo, si no desea elegir C/C, también hay disponibles Erlang/Golang eficientes similares, etc., principalmente para mejorar sus horizontes. ?

9. ¿Estudiar en otras direcciones profesionales?

En esta etapa, además de las habilidades básicas de LNMP, también considerarás aprender conocimientos en otros campos. dependiendo de los intereses personales y las direcciones de objetivos a largo plazo.

En la actualidad, hay muchos campos donde elegir, como la computación en la nube (almacenamiento distribuido, computación distribuida, máquinas virtuales, etc.), el aprendizaje automático (minería de datos, reconocimiento de patrones, etc., aplicado a estadísticas, recomendaciones personalizadas), natural. procesamiento del lenguaje (segmentación de palabras chinas, etc.), tecnología de motores de búsqueda, gráficos e imágenes, reconocimiento de voz, etc. Además de estos avanzados, también hay muchas áreas donde puedes aprender más sobre ingeniería, como sistemas de alto rendimiento, desarrollo móvil (Android/IOS), seguridad informática, sistemas embebidos, hardware, etc. ?

10. ¿Diseño de sistemas?

Sobre la base de la segunda etapa, el diseño de sistemas puede aplicar la experiencia y las habilidades dominadas para diseñar sistemas medianos y grandes relativamente complejos, que pueden resolver grandes problemas. -Problemas de escala. Algunos de los diversos problemas complejos del sistema se resuelven como navegador-gt; CDN-gt; equilibrio de carga-gt; varias complejidades. -interacción RPC final (back-end de almacenamiento, back-end lógico, back-end anti-trampas, servicios externos) -gt negocio de back-end más complejo capaz de soportar el desarrollo y mantenimiento normal de sitios web con decenas a cientos de; millones de tráfico cada día.