Con respecto a la eficiencia de ejecución de PHP, hay muchos artículos especiales en Internet, la mayoría de los cuales son debates entre los campos de PHP y Java. Diferentes aspectos de la aplicación y diferentes entornos de ejecución conducirán a una mayor diferencia en la eficiencia. Las aplicaciones "grandes" mencionadas aquí no se refieren a la implementación específica de sitios web grandes como Google, eBay y Yahoo. Solo espero que su sistema pueda funcionar más rápido y sin problemas, y que pueda alojar a más usuarios en línea. Puede darle a PHP un poco de ayuda para principiantes.
Las aplicaciones "grandes" mencionadas aquí no se refieren a la implementación específica de sitios web grandes como Google, eBay y Yahoo. No tengo intención de persuadir a los lectores para que abandonen sus conceptos y creencias. Solo espero que los sistemas de todos puedan funcionar más rápido. y más fluido. Puede alojar a más usuarios en línea y espero que pueda ayudar a los principiantes en PHP.
Con respecto a la eficiencia de ejecución de PHP, hay muchos artículos especiales en Internet. La mayoría de ellos comienzan con el debate entre los campos de PHP y Java y terminan con expectativas inciertas. De hecho, la eficiencia de ejecución de un programa es difícil de derivar de la comparación. Diferentes aspectos de la aplicación y diferentes entornos de ejecución conducirán a una mayor diferencia en eficiencia. Y también es necesario sopesar la eficiencia. Todo el mundo sabe que el lenguaje ensamblador es de muy bajo nivel y puede escribir programas muy eficientes. Sin embargo, rara vez he visto a alguien usar ensamblador para el desarrollo web y tener la capacidad de escribir programas en ensamblador. Los programadores eficientes parecen ser dignos del respeto de todos, jaja ~ No necesitamos discutir la diferencia entre PHP y ensamblador, siempre que sepamos la diferencia entre nuestro propio PHP y el PHP de otras personas.
En primer lugar, aclaremos la premisa de este artículo: debe haber uno o más servidores que usted mismo pueda controlar, no un espacio de host virtual. Después de todo, ya existen muchos trabajos clásicos y marcos maduros para sistemas de propósito general que pueden ejecutarse en hosts virtuales. Los predecesores han hecho muy bien la minería eficiente. Muchos de sus conceptos también han sido heredados y desarrollados por muchos usuarios actuales de PHP. Cada vez más, cuanto más llamados "marcos" existen, son como estrellas en el cielo. No quiero escribir más sobre ellos, porque, en primer lugar, mi propio nivel no es muy bueno, no puedo escribir nada. Nuevo, e incluso si lo escribo, la gente se reirá. En segundo lugar, hay demasiados artículos escritos sobre esto y hay demasiadas opiniones. La confusión es el mayor culpable de la muerte de muchos futuros programadores genios apasionados.
Existe una gran diferencia en la optimización de la eficiencia entre los programas ejecutados en un servidor dedicado y los programas que se pueden ejecutar en un host virtual. Por supuesto, puede instalar un conjunto de discuz en uno o incluso en varios servidores independientes sin modificaciones, pero ¿realmente obtiene la máxima optimización del rendimiento? ¿Es realmente digno de este grupo de servidores?
Un servidor independiente significa que el usuario tiene control total sobre la máquina, incluida la instalación y eliminación de software, la configuración de los parámetros del sistema e incluso la modificación del código fuente. Basado en una plataforma de hardware tan abierta, el rendimiento no sólo se refleja en la velocidad, sino que también incluye seguridad, estabilidad, etc. A diferencia de los hosts virtuales, los usuarios deben configurar los parámetros del servidor web, instalar y configurar PHP, bases de datos e instalar todo tipo de cosas complicadas (como me gusta decir) por sí mismos y, por supuesto, deben ser responsables de ello.
Primero, presentemos algunos términos: tiempo de ejecución, plantilla, encapsulación de base de datos, caché, búfer, hash, demonio y crontab.
Todo el mundo sabe que el tiempo de ejecución es el tiempo que tarda un programa en ejecutarse desde el principio hasta el final. Debido a que la Web es transitoria y sin estado, el tiempo de ejecución es un indicador de la eficiencia de ejecución del programa Web. No es adecuado para medir programas C/S o programas demonio en segundo plano porque muchos de ellos se ejecutan continuamente. Un ejemplo típico del tiempo de ejecución de una página es el tiempo que se muestra en la parte inferior de la página del foro de Discuz. Por lo general, Discuz oscila entre unos pocos milisegundos y decenas de milisegundos, según la plataforma utilizada, la cantidad de datos y la presión actual del sistema.
Todo el mundo está familiarizado con las plantillas, aunque muchas personas simplemente las utilizan, no saben por qué las utilizan. Las plantillas son tradicionalmente una forma de dividir capas lógicas en la estructura superior de MVC, separan la capa de presentación de la capa inferior. En el uso real, facilitan la división del trabajo entre programadores y diseñadores de interfaces. Sin embargo, en muchos casos ahora, debido al uso inadecuado de plantillas, en lugar de promover la división del trabajo y la cooperación entre programadores y diseñadores de interfaces, se ha convertido en el principal culpable del odio mutuo entre programadores y artistas (creo que dije esto en una publicación anterior), muchas personas se quejan de que tienen que dedicar mucho tiempo a organizar plantillas.
La encapsulación de bases de datos parece estar más relacionada con Java. Proporciona una interfaz de llamada unificada para varios sistemas de bases de datos. Generalmente, algunas clases encapsuladas a veces también completan algunas tareas como verificación y filtrado de SQL. Los paquetes DB, PEAR DB, Adodb, etc. en PHPLIB son famosos y utilizados por muchas personas.
Caché y Buffer parecen ser lo mismo, Cache se llama caché y Buffer se llama almacenamiento en búfer. En el concepto de hardware, el propósito de Cache es conectar dos dispositivos con diferentes velocidades, como registros y memoria, CPU y PCI-Bus, bus IDE y disco duro. El significado original de Buffer es un amortiguador similar a un resorte, algo que se usa para reducir o absorber el impacto del impacto. El búfer es un método de acceso previo a los datos que se utiliza para almacenar datos temporalmente y transmitirlos a una velocidad diferente a la de recepción. El método de actualización del búfer se puede actualizar automáticamente según intervalos de tiempo, mientras que el caché presta más atención a la "tasa de aciertos" y coloca una pequeña cantidad de datos que se utilizan con frecuencia en el período de tiempo actual en un dispositivo de alta velocidad para facilitar la lectura. y escritura. En el desarrollo de programas, aunque no existen dispositivos de alta o baja velocidad, las fuentes de datos pueden tener diferentes eficiencias de lectura y escritura. Para una pequeña cantidad de datos, la lectura y escritura de archivos de texto suele ser más eficiente que el acceso a la base de datos, y la misma eficiencia de lectura y escritura de archivos de texto en tmpfs es mejor que la eficiencia de E/S directa del disco. El búfer se refleja más en la comunicación del proceso y las colas. En muchos casos, no se debe a que el receptor no pueda leer más rápido, sino a que no es necesario leer más rápido.
Un proceso demonio es un programa que se ejecuta continuamente en segundo plano. Por lo general, desempeña un papel en el seguimiento, control de procesos y prestación de servicios externos. Por ejemplo, el propio Apache puede entenderse como un proceso demonio, aunque en realidad está compuesto por muchos procesos que se actualizan con frecuencia (el proceso principal es fijo).
Crontab es un programa programado de UNIX/Linux, que se parece un poco a las "tareas programadas" de Windows. Establece un determinado intervalo de tiempo o un determinado momento para ejecutar un programa específico. Por lo general, se utiliza para completar actualizaciones automáticas, borrar datos temporales y otras operaciones que se realizan automáticamente una vez cada cierto tiempo.
Otro concepto especial (especialmente para las personas que están acostumbradas al desarrollo general de sistemas) es que una vez que tenemos un servidor independiente, no es necesario limitarnos a las funciones que PHP puede proporcionar. Cuando, sin saberlo, nos convertimos en los dueños del sistema. Debemos trabajar duro para darnos cuenta de esto. Hay muchas cosas que podemos usar. PHP no es omnipotente (esto es seguro), y Perl puede compensar completamente sus deficiencias funcionales. Como lenguaje general, Perl puede proporcionar más opciones funcionales y sus módulos son tan densos como el lenguaje casual y pervertido. energía. Para las deficiencias de rendimiento de PHP, se puede utilizar C para compensarlas. La base de PHP se hereda de C. El propio PHP también es desarrollado por C. Es completamente razonable usar C para extender PHP.
El propio Linux es compatible con C y Perl (digo esto para no exagerar el estado de Perl. Puede ver cuántos scripts de Perl hay en un Linux estándar y ver si el sistema se siente como una persona discapacitada sin Perl). PHP heredó la mayor parte de su sintaxis de C y aprendió la mayoría de las características y funciones web y el símbolo "$" que parece contradictorio con el código abierto de Perl (PHP era un script de Perl en sus inicios).
Analicemos parte del código que estoy usando (Nota: aplicable a servidores independientes de Linux. Parece que he abandonado el desarrollo a gran escala para Windows y hosts virtuales durante mucho tiempo). Utiliza algunos métodos que pueden resultar familiares, desconocidos o anormales. Mi sistema es RedHat AS3, nada especial, la versión de PHP es 4.4.0, MySQL es 4.1. Nunca escribo intencionalmente código que deba utilizar las nuevas características de PHP5 a menos que sea realmente necesario.
Mi directorio raíz web está en /www. Apache y PHP están instalados en /usr/local/ de forma predeterminada. MySQL es una versión binaria descargada y compilada, y también la dejo allí. Debido a que es solo para pruebas, no quiero que parezca complicado. En cuanto a los proyectos reales, especialmente en el caso de múltiples servidores, es necesario implementar bien su sistema.
Para aclarar la estructura del sistema, coloco todos los archivos que necesito usar en el directorio secundario.
Aquí hay algunos fragmentos del archivo de encabezado común /includes/kernel/common.inc.php:
﹤?php
si (!definido('IN_BSG')) {
salida;
}
?﹥
El código anterior garantiza que solo lo puedan llamar programas legales y que no se incluya en otros archivos. Si el programa en ejecución no define una constante 'IN_BSG', finalizará después de incluir este common.inc.php.
﹤?php
lista($usec, $sec) = explotar(" ", microtime());
$page_time_start = $useg + $seg;
?﹥
Puede que todo el mundo esté familiarizado con estas dos líneas, que se utilizan para calcular el tiempo de ejecución inicial del programa. Antes de que finalice el programa, este se calcula nuevamente para saber el tiempo que tomó ejecutar el programa. Si esto no te importa, puedes comentarlo con seguridad.