comandos - ¿Cuáles son algunos buenos consejos de rendimiento de PHP?
optimizar php 7 (13)
- Considere la posibilidad de vincular variables al estado de la base de datos en lugar de ponerlas en una cláusula SQL. El mismo método es similar para Oracle RDBMS y MySQL, quizás otros también (analizar, enlazar, ejecutar). Una consulta con variables enlazadas se prepara más rápido para ejecutarlas más de una vez.
- Si tiene más de una fila para insertar, puede usar un DML a granel .
He escuchado sobre algunos consejos de rendimiento para PHP, como el uso de strtr()
sobre str_replace()
sobre preg_replace()
dependiendo de la situación.
En cuanto al uso de ciertas funciones sobre otras, y el estilo de código, ¿cuáles son algunos de los consejos de rendimiento que conoce?
Edición: no estoy hablando del uso de cosas que hacen que el código sea menos legible, como !isset($foo{5})
sobre strlen($foo) < 5
, estoy hablando de cosas como usar funciones preg_ sobre funciones ereg_ para expresiones regulares
Edición: la razón por la que pregunto esto no es para determinar cuándo optimizar, sino para tener una idea general de lo que tiende a ser más eficiente en un conjunto limitado de alternativas. Por ejemplo, verificar si una declaración mysql devolvió un error es una práctica mejor que eliminar los errores para empezar.
- Usar funciones nativas de PHP
- Utilizar cotizaciones individuales
Usar comillas simples ('''') es más rápido que usar comillas dobles ("") - Utilice = = =
Use "= = =" en lugar de "= =", Calcular solo una vez Calcule y asigne el valor a la variable si ese valor se está utilizando varias veces en lugar de calcularlo una y otra vez en el lugar donde se está utilizando.
Por ejemplo, lo siguiente degradará el rendimiento.
for( $i=0; i< count($arrA); $i++){ echo count($arrA); }
El script a continuación se desempeñará mucho mejor.
$len = count($arrA); for( $i=0; i< $len; $i++){ echo $len;
}
Cajas de interruptores usados
- Usar json
Use JSON en lugar de XML mientras trabaja con servicios web, ya que existen funciones php nativas como json_encode () y json_decode () que son muy rápidas. 7. Use isset Use isset () siempre que sea posible en lugar de usar count (), strlen (), sizeof () para verificar si el valor devuelto es mayor que 0.
- Concatenar variables es más rápido que simplemente ponerlas en una cadena de comillas dobles.
Debe medir antes de optimizar. Sin mediciones, no puedes tener objetivos. Sin goles, estás perdiendo el tiempo.
Si descubre que su página web tarda 250 ms en renderizarse, ¿es eso lo suficientemente rápido? Si no, ¿qué tan rápido debe ser? No bajará a cero. ¿Necesitas que sea 200ms?
Use una herramienta como XDebug ( http://www.xdebug.org/ ) para determinar dónde están los hotspots en su código. Es probable que encuentre que su aplicación está tardando el 80% de su tiempo en acceder a la base de datos. Si su aplicación está tomando 200 ms para obtener datos de la base de datos, y .01 ms en las llamadas a str_replace
, las aceleraciones de ir a strtr
, o de usar echo
lugar de print
son tan pequeñas que no son relevantes.
El sueño de poder usar strtr
lugar de str_replace
y obtener aceleraciones notables y medibles es una fantasía.
Es obvio, pero crear objetos también es costoso, por ejemplo. Si necesita una marca de tiempo, hacer un time () es el doble de rápido que hacer un date_create () -> getTimestamp.
for ($a=1;$a<1000000;$a++) {
$e = time(); // In my tests about 2x faster than:
//$e = date_create()->getTimestamp();
}
Esta pregunta (y las respuestas) están un poco anticuadas, pero aparecieron en los listados cuando busqué en Google para "Rendimiento de PHP".
Si bien jgmjgm hace algunos buenos puntos, el tiempo de ejecución de PHP es típicamente una pequeña proporción del tiempo que un usuario pasa esperando a que aparezca una página, pero explicar por qué, y mucho menos detallar los remedios llevaría demasiado tiempo aquí.
El primer paso es identificar las cosas que llevan más tiempo y, para una aplicación basada en web, debe comenzar desde el navegador. Google Chrome tiene un buen perfilador y para Firefox, existe la extensión Firebug. Si el bit lento es PHP, continúe con un generador de perfiles como xdebug, pero recuerde que esto abarcará cualquier base de datos y archivo IO.
Esta pregunta es realmente vaga. Cuando quiera optimizar su script, primero revise su base de datos e intente optimizar sus algoritmos. No hay muchos consejos puros de rendimiento de PHP que sean importantes. Veamos :
Concatenar variables es más rápido que simplemente ponerlas en una cadena de comillas dobles.
$var = ''Hello '' . $world; // is faster than $var = "Hello $world"; // or $var = "Hello {$world}";
Sí, es más rápido, pero la segunda y tercera forma son aún más legibles y la pérdida de velocidad es tan baja que ni siquiera importa.
Cuando use un bucle, si su condición usa una constante, póngala antes del bucle. Por ejemplo :
for ($i = 0; $i < count($my_array); $i++)
Esto evaluará el conteo ($ my_array) cada vez. Solo haz una variable extra antes del bucle, o incluso dentro:
for ($i = 0, $count = count($my_array); $i < $count; $i++)
Lo peor es definitivamente consultas dentro de los bucles. Ya sea por falta de conocimiento (intentando simular un JOIN en PHP) o simplemente porque no piensas en ello (muchos se insertan en un bucle, por ejemplo).
$query = mysql_query("SELECT id FROM your_table"); while ($row = mysql_fetch_assoc($query)) { $query2 = mysql_query("SELECT * FROM your_other_table WHERE id = {$row[''id'']}"); // etc }
Nunca hagas esto Eso es un simple INNER JOIN.
Probablemente hay más, pero en realidad, no vale la pena escribirlos todos. Escribe tu código, optimízalo más tarde.
PD: comencé a escribir esta respuesta cuando no había ninguna, puede que haya algunas cosas que ya se hayan dicho en los enlaces.
Editar: por alguna razón, no puedo formatear el código correctamente. Realmente no entiendo por qué.
Este podría parecer un poco extremo pero ...
PHP es extremadamente lento. Esto es innegable. Es uno de los idiomas más lentos que hay. Si realmente quieres el máximo rendimiento, me quedaré aquí y usaré otro idioma.
Lo más probable es que no necesite el máximo rendimiento, ya que las computadoras tienden a ser bastante potentes hoy en día y la escala o el almacenamiento en caché es una opción. PHP también tiende a volverse más rápido con los nuevos lanzamientos, especialmente PHP 7, por lo que declarar reciente probablemente le dará mejoras de rendimiento gratuitas. Las diferencias entre versiones pueden hacer que algunas micro optimizaciones sean inútiles.
Completamente contrario a la afirmación de que PHP es el lenguaje más lento, es posible que en algunos casos supere a casi todos los lenguajes interpretados. Esto se debe a que PHP originalmente fue pensado como un contenedor muy simple para C y muchas de sus funciones de PHP envuelven las funciones C, lo que las hace bastante rápidas. Esto en realidad tiende a ser el caso con la mayoría de los lenguajes interpretados, pero es mucho más notable en PHP.
Al contrario de eso, algunas de las funciones integradas pueden tener problemas de rendimiento cuando intentan hacer demasiado o no se implementan bien. Creo que hasta que PHP 7 array_unique se implementó de una manera muy extraña y excesivamente compleja, sería más rápido utilizar algo como array_flip y array_keys.
PHP es así. Es uno de los lenguajes más extravagantes que existen, con una colección de atributos contradictorios que son opuestos extremos. Es uno de los más inconsistentes, pero uno de los más fáciles de aprender. PHP es uno de los peores lenguajes que han crecido orgánicamente más que un diseño, pero es uno de los lenguajes más productivos como DSL para desarrollo web. PHP es muy malo a la hora de escalar, pero es uno de los lenguajes web más escalables que existen cuando se ejecuta bajo Apache. Podría seguir, pero el punto es esperar confusión cuando se trata de PHP.
Ditching PHP no es sin un costo. La productividad en PHP tiende a ser mucho más alta que en otros idiomas para webdev y la barra de entrada es muy baja.
Si desea tener lo mejor de ambos mundos, simplemente haga que su código PHP sea lo más simple posible, con el objetivo principal de que funcione y no que sea rápido. El siguiente paso después de esto es asegurarse de mantener buenos registros para poder encontrar las solicitudes que tienen la latencia más alta o la mayor cantidad de recursos. Una vez que sepas esto, puedes hacer perfiles específicos. Piénselo así, sus registros le dirán qué archivo o solicitud de perfil, su perfil le dirá qué líneas o bloques de código son lentos.
Sin embargo, no olvide que a menudo no es PHP tan lento o difícil de escalar, sino otros recursos de los que dependen sus scripts PHP, como la base de datos.
El monitoreo general de recursos también es útil. Por ejemplo, si el uso de la CPU en el ambiente es inferior al 5%, ¿por qué hacer algo a menos que la latencia aparezca en algún lugar? Esto también ayuda a proporcionarle más sugerencias sobre dónde se está atascando PHP (dónde están los cuellos de botella, red, HDD IO, memoria, CPU, etc.). Además, tenga en cuenta que el hardware de hoy en día es realmente muy barato y que los problemas de hardware pueden resultar mucho más efectivos. Tal monitoreo nuevamente permite un enfoque dirigido. Soy un viejo con experiencia en hardware limitado y puedo decirte que en el día solía optimizar mucho prematuramente. Esto daría un buen retorno, pero hoy simplemente no lo hace. Por lo general, puedo pasar un mes optimizando algo y por el mismo costo de horas de trabajo comprar un hardware que podría resultar en un aumento de rendimiento dos veces sin el gran esfuerzo. No tomaría esto demasiado lejos, el hardware no resuelve todo, pero mire de esta manera, no importa cuánto intente optimizar, el hardware presenta límites estrictos, por lo que si va demasiado lejos para intentar que funcione con un hardware deficiente. rápidamente llegará al reino de los rendimientos decrecientes.
Una vez que encuentre estas áreas problemáticas, puede intentar optimizarlas con un mejor PHP o almacenamiento en caché. En la mayoría de los casos, esto podría ser suficiente. A menudo es posible que PHP no sea el cuello de botella, sino algo más, como el acceso a la base de datos.
Si encuentra que no puede optimizar en PHP o con el almacenamiento en caché, tiene que pensar en otra cosa. Usar otro idioma es una opción y, por supuesto, aquí existe la posibilidad de usar C y luego envolverlo en PHP como una extensión. C es caro escribir en general, por lo que este enfoque le permite usarlo solo donde lo necesita o, más bien, donde recibe el mayor beneficio. Esto se llama optimización de punto de acceso.
Aparte de esto, hay muchas otras alternativas y no necesita envolver solo C, pero si PHP no puede hacerlo, PHP no puede hacerlo. También puede considerar escalar a través de múltiples nodos o procesos, pero tenga en cuenta que en algunos casos, PHP no se escala bien cuando se trata de un procesamiento paralelo debido a que no se comparte nada (no es necesario compartir muchas cargas de escalamiento para obtener un beneficio).
Independientemente de lo que decida, cuando se trata de ello, podemos ofrecerle 1000 consejos sobre la microoptimización. Tal vez sea uno de los mejores en todos los aspectos que puedo ofrecerle para tratar de incluir tantas funciones nativas de PHP como sea posible, ya que estas ejecutarán operaciones masivas en C mucho más rápido. También debe seguir buenos conceptos teóricos cuando se trata del diseño de algoritmos sobre cosas como la complejidad del tiempo, ya que son universalmente aplicables. De hecho, la mayoría de los consejos de rendimiento que la gente puede darle probablemente serán conceptos de programación generales y no específicos de PHP. También sugeriría evitar la hinchazón de la biblioteca o los marcos voluminosos. Cuanto más prometen, más probable es que sea demasiado bueno para ser verdad en el mundo real. La simplicidad es la clave y, aunque las bibliotecas siempre son buenas, primero piense, si incluye diez mil líneas de código para ahorrar, escriba diez de cada cien, que podría convertir en una función y reutilizarse.
El uso de Opcache o APC si utiliza versiones de PHP por debajo de 5.5 dará instantáneamente una buena mejora de la velocidad en los tiempos de análisis de PHP y hará que esto no sea una preocupación. PHP 5.5 debería tenerlo incorporado pero asegúrese de que esté habilitado.
El tema de qué es más rápido que qué en qué situación compara miles de cosas con miles de cosas, por lo que lo mejor es estudiar y aprender más sobre qué es PHP en realidad, cómo funciona y cómo medir, probar y analizar el rendimiento. Si tiene una buena idea de cómo funciona PHP bajo el capó, podrá intuir mejor los problemas cuando surjan. La optimización de diez líneas de código puede convertirse en un debate de 10000 palabras. Imagina tu aplicación cuando tenga miles de líneas de código.
Entiendo en algunos casos la importancia o el beneficio de la optimización preventiva y micro (en gran parte consiste en evitar las peculiaridades de rendimiento en idiomas donde el rendimiento se reduce de forma desproporcionada). Sin embargo, en realidad, generalmente es casi imposible alcanzar el tipo de ganancias que espera (nuevamente, aunque debo decir que el mayor impacto que puede tener si realmente le importa el rendimiento es deshacerse de PHP por completo, básicamente esto se puede ver como preguntar cómo ¿Puedo hacer un caracol rápido, la respuesta es si la velocidad es tan importante para usar algo creado para eso? Incluso los experimentados y conocedores pueden tener dificultades con esto. Casi nadie lo entiende bien la primera vez. Entonces, donde realmente quieres gastar esfuerzos es en la capacidad de mantenimiento. Mantenga su código consistente, ordenado y bien organizado. Usé VCS para poder eliminar cosas fácilmente (no comentar el código ni renombrar archivos a .old). Asegúrese de mantenerse SECO y en general siga las buenas prácticas. TIAS, Google, etc.
Imaginemos que tienes una serie de palabras.
Así: $words=array(''banana'',''cat'',''tuna'',''bicycle'',''kitten'',''caffeine'');
Y luego tienes un término de búsqueda para encontrar, como este: $find=''ca'';
Y quieres saber todos los elementos que comienzan con ese término dado.
Por lo general, haríamos esto:
foreach($words as &$word)if(preg_match(''@^''.$find.''@'',$word))echo $word,''<br>'';
O la forma más rápida:
foreach($words as &$word)if(strpos($find,$word)==0)echo $word,''<br>'';
Pero, ¿por qué no hacemos esto?
foreach($words as &$word)if($find==($find&$word))echo $word,''<br>'';
Reduce algunos bytes Y es más rápido porque no tiene que perder tiempo llamando a las funciones.
Por lo general, la optimización prematura es una mala idea. Realmente no importa cuando usted hace que su código se ejecute 0.5 ms más rápido cuando una única consulta SQL toma 80 ms.
Debería crear un perfil del código y concentrarse en los cuellos de botella y luego intentar cosas como el almacenamiento en caché (estático, APC, Memcached). Las microoptimizaciones son el último paso cuando tiene un diseño de aplicación perfecto y aún necesita más rendimiento de ciertos módulos / funciones.
Si está buscando buenos consejos sobre cómo programar su código para que sea el más eficiente, consulte http://www.phpbench.com/ . Muestran muchas comparaciones sobre diversos aspectos de la programación para que pueda utilizar los mejores métodos que se ajusten a sus necesidades. En general, se trata de si está buscando ahorrar en la capacidad de procesamiento o en el uso de la memoria.
http://talks.php.net/show/digg/0 - Una charla dada por PHP sobre el rendimiento
http://code.google.com/speed/articles/optimizing-php.html : recomendaciones de Google sobre cómo acelerar sus aplicaciones
La mayoría de las veces, sus problemas no son con PHP, pero serán problemas de solicitudes de MySQL o http.
Use comillas simples en lugar de dobles siempre que sea posible. (O incluso una variable, por tonta que parezca) Abuse los arreglos asociativos de PHP, son tablas hash y son muy rápidas para cualquier tipo de búsqueda.
Sin embargo, no se centre tanto en el rendimiento de bajo nivel. Las tareas que realizas en PHP son normalmente muy simples. Normalmente se repiten a menudo. Lo que esto significa es que el enfoque real que debe tener para la velocidad son los límites de PHP.
Concéntrese en la velocidad entre PHP y su base de datos. Concéntrese en el tamaño del marcado al salir. Centrarse en el caché.
Es MUY raro que vea algún tipo de ganancia en la optimización del código en sí. Al menos en la escala de escoger una función sobre otra. Es evidente que desea evitar repeticiones redundantes o inútiles. Pero aparte de eso no deberías preocuparte.
LA OPTIMIZACIÓN TEMPRANA ES LA RAÍZ DE TODO MAL
Y ese es el consejo más importante que necesitas. Si algún día tiene un problema real de rendimiento, perfile su aplicación, detecte las áreas comprometidas y vuelva a preguntar :)
66 consejos para optimizar tu PHP
Aquí están los puntos de Webber:
- Usa JSON en lugar de XML.
- También puede usar sprintf en lugar de variables contenidas entre comillas dobles, es aproximadamente 10 veces más rápido.
- Evite el problema de inyección de encabezado de la función PHP ()
- Si un método puede ser estático, declararlo estático. La mejora de la velocidad es por un factor de 4.
- echo es más rápido que la impresión. ( * comparar con la lista de phplens por John Lim )
- Utilice los múltiples parámetros de eco en lugar de concatenación de cadenas.
- Establezca el valor máximo para sus bucles for antes y no en el bucle.
- Desactive las variables para liberar memoria, especialmente las matrices grandes.
- Evita la magia como __get, __set, __autoload
- require_once () es caro
- Use rutas completas en incluye y requiere, menos tiempo dedicado a resolver las rutas del sistema operativo.
- Si necesita averiguar la hora en que comenzó a ejecutarse el script, se prefiere $ _SERVER [''REQUEST_TIME''] a time ()
- Vea si puede usar strncasecmp, strpbrk y stripos en lugar de expresiones regulares
- str_replace es más rápido que preg_replace, pero strtr es más rápido que str_replace por un factor de 4
- Si la función, como la función de reemplazo de cadena, acepta arrays y caracteres individuales como argumentos, y si su lista de argumentos no es demasiado larga, considere escribir algunas declaraciones de reemplazo redundantes, pasando un carácter a la vez, en lugar de una línea de código que acepta matrices como buscar y reemplazar argumentos.
- Es mejor usar declaraciones selectas que múltiples si, si no, declaraciones.
- La supresión de errores con @ es muy lenta.
- Activar mod_deflate de apache
- Cierre sus conexiones de base de datos cuando haya terminado con ellos
- $ row [''id''] es 7 veces más rápido que $ row [id]
- Los mensajes de error son caros
- No use funciones dentro de for loop, como para ($ x = 0; $ x <count ($ array); $ x) La función count () se llama cada vez.
- Incrementar una variable local en un método es el más rápido. Casi lo mismo que llamar a una variable local en una función.
- Incrementar una variable global es 2 veces más lento que una var. Local.
- Incrementar una propiedad de objeto (por ejemplo, $ this-> prop ++) es 3 veces más lento que una variable local.
- Incrementar una variable local indefinida es 9-10 veces más lento que el de una inicializada previamente.
- El solo hecho de declarar una variable global sin usarla en una función también ralentiza las cosas (aproximadamente la misma cantidad que al incrementar una var local). PHP probablemente hace una verificación para ver si existe el global.
- La invocación del método parece ser independiente de la cantidad de métodos definidos en la clase porque agregué 10 métodos más a la clase de prueba (antes y después del método de prueba) sin ningún cambio en el rendimiento.
- Los métodos en las clases derivadas se ejecutan más rápido que los definidos en la clase base.
- Una llamada de función con un parámetro y un cuerpo de función vacío toman aproximadamente el mismo tiempo que las operaciones de localvar ++ de 7-8 $. Una llamada de método similar es, por supuesto, alrededor de 15 $ operaciones localvar ++.
- Rodear la cadena con "en lugar de" hará que las cosas se interpreten un poco más rápido, ya que php busca variables dentro de "..." pero no dentro de "...". Por supuesto, solo puede hacer esto cuando no necesita tener variables en la cadena.
- Al hacer eco de las cadenas, es más rápido separarlas por comas en lugar de puntos. Nota: Esto solo funciona con echo, que es una función que puede tomar varias cadenas como argumentos.
- Apache servirá un script PHP al menos 2-10 veces más lento que una página HTML estática. Trate de usar más páginas HTML estáticas y menos scripts.
- Sus scripts PHP se compilan cada vez a menos que los scripts se almacenen en caché. Instale un producto de almacenamiento en caché de PHP para aumentar el rendimiento en un 25-100% al eliminar los tiempos de compilación.
- Caché tanto como sea posible. Use memcached: memcached es un sistema de almacenamiento en caché de objetos de memoria de alto rendimiento destinado a acelerar las aplicaciones web dinámicas al aliviar la carga de la base de datos. Los cachés de código OP son útiles para que su script no tenga que compilarse en cada solicitud
- Cuando trabaje con cadenas y necesita verificar que la cadena tenga una cierta longitud, comprensiblemente, desearía usar la función strlen (). Esta función es bastante rápida ya que su operación no realiza ningún cálculo, sino que simplemente devuelve la longitud ya conocida de una cadena disponible en la estructura zval (estructura interna C utilizada para almacenar variables en PHP). Sin embargo, debido a que strlen () es una función, aún es un poco lenta debido a que la llamada a la función requiere varias operaciones, como la búsqueda en minúscula y tabla hash seguida de la ejecución de dicha función. En algunos casos, puede mejorar la velocidad de su código utilizando un truco isset ().
Ex. ver sourceprint? 1.if (strlen ($ foo) <5) {echo "Foo es demasiado corto"; }contra
ver sourceprint? 1.if (! isset ($ foo {5})) {echo "Foo is too short"; }Pasar a isset () es más rápido que strlen () porque a diferencia de strlen (), isset () es una construcción de lenguaje y no una función, lo que significa que su ejecución no requiere búsquedas de funciones y minúsculas. Esto significa que prácticamente no tiene gastos generales sobre el código real que determina la longitud de la cadena.
- Cuando se incrementa o disminuye el valor de la variable $ i ++ es un poco más lento que ++ $ i. Esto es algo específico de PHP y no se aplica a otros idiomas, así que no modifique su código C o Java, ya que de repente se hará más rápido, no lo hará. Resulta que ++ $ i es más rápido en PHP porque en lugar de 4 códigos de operación utilizados para $ i ++ solo necesita 3. El incremento de la publicación en realidad causa la creación de una var temporal que luego se incrementa. Mientras que el pre-incremento aumenta el valor original directamente. Esta es una de las optimizaciones que optimiza opcode como el optimizador PHP de Zend. Es una buena idea tener en cuenta, ya que no todos los optimizadores de opcode realizan esta optimización y hay muchos ISP y servidores que se ejecutan sin un optimizador de opcode.
- No todo tiene que ser OOP, a menudo es una sobrecarga, cada método y llamada de objeto consume mucha memoria.
- No implemente todas las estructuras de datos como clase, las matrices también son útiles
- No dividas los métodos demasiado, piensa, qué código realmente reutilizarás
- Siempre puede dividir el código de un método más tarde, cuando sea necesario
- Hacer uso de las innumerables funciones predefinidas.
- Si tiene muchas funciones en su código, considere escribirlas como extensiones C
- Perfil de su código. Un generador de perfiles le muestra qué partes de su código consumen la cantidad de tiempo. El depurador de Xdebug ya contiene un generador de perfiles. El perfil le muestra los cuellos de botella en la visión general
- mod_gzip, que está disponible como un módulo de Apache, comprime sus datos sobre la marcha y puede reducir los datos para transferir hasta un 80%
- Excelente artículo sobre la optimización de php por John Lim
Como Reihold Webber señaló una publicación de John Lim (encontré este artículo copiado sin indicar la fuente aquí), luego investigo más y realmente es un excelente tutorial de mejores prácticas para optimizar el rendimiento del código php, que cubre casi todos los aspectos desde un servidor web de bajo nivel. configuración, configuración de PHP, estilo de codificación y comparación de rendimiento también.
Otra buena práctica para un mejor rendimiento de php como está escrito en cluesheet.com son:
- Use comillas simples sobre comillas dobles.
- Utilice el interruptor sobre muchas declaraciones if
- Evite probar condicionales de bucle con pruebas de función en cada iteración, por ejemplo. para ($ i = 0; i <= recuento ($ x); $ i ++) {…
- Use foreach para agrupar colecciones / arreglos. Los elementos de PHP4 son byval, más que los elementos de PHP5 son byref
- Considere usar el Método Singleton al crear clases de PHP complejas.
- Utilice POST sobre GET para todos los valores que terminarán en la base de datos por motivos de rendimiento de paquetes TCP / IP.
- Utilice ctype_alnum, ctype_alpha y ctype_digit sobre expresiones regulares para probar tipos de valores de formulario por razones de rendimiento.
- Utilice rutas de archivo completas en el entorno de producción sobre nombre base / fileexists / open_basedir para evitar impactos de rendimiento para el sistema de archivos que tiene que cazar a través de la ruta del archivo. Una vez determinados, serialice y / o almacene los valores de ruta en una matriz $ _SETTINGS. $ _SETTINGS ["cwd"] = cwd (./);
- Utilice require / include over require_once / include_once para garantizar el almacenamiento en caché del código de operación correcto.
- Use tmpfile o tempnam para crear archivos temporales / nombres de archivos
- Utilice un proxy para acceder a los servicios web (XML o JSOM) en dominios extranjeros utilizando XMLHTTP para evitar errores de dominio cruzado. p.ej. foo.com <–> XMLHTTP <–> bar.com
- Utilice error_reporting (E_ALL); durante la depuración
- Configure Apover allowoverride en "ninguno" para mejorar el rendimiento de Apache al acceder a los archivos / directorios.
- Utilice un servidor de archivos rápido para servir contenido estático (thttpd). static.mydomain.com, dynamic.mydomain.com
- Serialice la configuración de la aplicación, como las rutas en una matriz asociativa y caché, o serialice esa matriz después de la primera ejecución.
- Utilice el búfer de control de salida de PHP para el almacenamiento en caché de la página de las páginas a las que se accede con más fuerza
- Utilice la preparación de DOP sobre la preparación de db nativa para las declaraciones. mysql_attr_direct_query => 1
- NO utilice la selección de comodín de SQL. p.ej. SELECCIONAR *
- Utilice la lógica de la base de datos (consultas, uniones, vistas, procedimientos) sobre PHP débil.
- Utilice la sintaxis de acceso directo para inserciones de SQL si no utiliza parámetros de parámetros de PDO. p.ej. INSERTE EN VALORES MITABLES (CAMPO1, CAMPO2) (("x", "y"), ("p", "q"));
Ref - gist.github.com
Visité otros blogs y comparé todos los puntos anteriores e intenté agregar todo aquí para optimizar su código PHP.
Espero que esto te ayude.