IMPORTANTE!
Este artículo que sigue ha sido un tema de discusión muy fuerte por parte la comunidad PHPera en general por lo conservo de modo que puedan apreciar el artículo original en esta traducción que hice y luego acceder a los siguientes links que les dejo al final del artículo y quiten sus conclusiones. ¿Mi opinión personal? Totalmente de acuerdo con las quejas presentadas por la comunidad. En principio leí el artículo y apesar de saber de que Google nunca estuvo de amores con PHP tomé confianza pero gracias a Dios existe gente con mucha más experiencia que yo que notaron ciertas medias verdades (por no decir mentiras).Espero luego de esto realizar una última modificación esta entrada con la información de réplica escrita bajo cada tip de Google. Gracias Gustavo Antúnez por pasarme la info de corrección :)

Experiencia recomendada: principiante a intermedio de conocimientos de PHP
PHP es un lenguaje de scripting muy popular, utilizado en muchos sitios a través de la web. En este artículo, esperamos que le ayude a mejorar el rendimiento de sus scripts PHP con algunos cambios que puede hacer muy rápidamente y sin dolor. Por favor, tenga en cuenta que las ganancias de su propio desempeño puede variar mucho, dependiendo de qué versión de PHP que se esté ejecutando, el eterno de su servidor web, y la complejidad de su código.
Perfil de su código para identificar los cuellos de botella
En el dictamen de Hoare se afirma que la optimización prematura es la raíz de todo mal, una cosa importante a tener en cuenta cuando se trata de hacer sus sitios web con mayor rapidez. Antes de cambiar el código, tendrá que determinar lo que está causando a ser lento. Usted puede ir a través de esta guía, y muchos otros en la optimización de PHP, cuando la cuestión podría estar relacionada con la base de datos o con la red. Por perfiles de su código PHP, puede intentar identificar los cuellos de botella.
Actualice su versión de PHP
El equipo de desarrolladores de PHP que mantiene el motor ha realizado una serie de importantes mejoras de rendimiento en los últimos años. Si su servidor web todavía se está ejecutando una versión anterior, tales como PHP 3 o PHP 4, puede que desee investigar la actualización antes de intentar optimizar el código.
- Migración desde PHP 4 a PHP 5.0.x
- Migración desde PHP 5.0.x a PHP 5.1.x
- Migración desde PHP 5.1.x a PHP 5.2.x
Utilice el almacenamiento en caché
Haciendo uso de un módulo de almacenamiento en caché, como Memcache, o un sistema de plantillas que soporta el almacenamiento en caché, como Smarty, puede ayudar a mejorar el rendimiento de su sitio web cacheando los resultados de la base de datos y páginas renderizadas.
Utilice buffers de salida
PHP utiliza un buffer de memoria para almacenar todos los datos que el script intenta imprimir. Este búfer puede hacer sus páginas parecen lentos, ya que sus usuarios tienen que esperar a que el buffer se llene antes que envíe los datos. Afortunadamente, usted puede hacer algunos cambios que fuerza al PHP a vaciar los buffers antes de la salida, y más a menudo, hacer sentir su sitio más rápido para sus usuarios.
No copie variables sin ningún motivo
A veces novatos en PHP intentan hacer su código "limpio" copiando variables predefinidas a variables con nombres más cortos en vez de trabajar con ellos. Esto realmente se traduce en duplicación en el consumo de memoria, y por lo tanto, la lentitud de los scripts. En el siguiente ejemplo, imaginen que un usuario malintencionado ha insertado un valor de 512KB de caracteres en un campo de texto. Esto daría como resultado 1 MB de memoria que se utiliza!
$description = strip_tags($_POST['description']);
echo $description;
No hay razón para copiar la variable anterior. Usted puede simplemente llevar a cabo esta operación en línea y evitar el consumo de memoria adicional:
echo strip_tags($_POST['description']);
Evite hacer consultas SQL dentro de un bucle
Un error común es colocar una consulta SQL dentro de un bucle. Esto se traduce en múltiples viajes de ida y vuelta a la base de datos, scripts y mucho más lento. En el siguiente ejemplo, puede cambiar el bucle para crear una sola consulta SQL e insertar todos sus usuarios a la vez.
foreach ($userList as $user) {
$query = 'INSERT INTO users (first_name,last_name) VALUES("' . $user['first_name'] . '", "' . $user['last_name'] . '")';
mysql_query($query);
}
Produce:
INSERT INTO users (first_name,last_name) VALUES("John", "Doe");
En lugar de usar un bucle, puede combinar los datos en una única base de datos de consulta.
$userData = [];Produces:
foreach ($userList as $user) {
$userData[] = '("' . $user['first_name'] . '", "' . $user['last_name'] . '")';
}
$query = 'INSERT INTO users (first_name,last_name) VALUES' . implode(',', $iserData);
mysql_query($query);INSERT INTO users (first_name,last_name) VALUES("John", "Doe"),("Jane", "Doe")...
Utilice comillas simples para las cadenas largas
El motor de PHP permite tanto solo comillas dobles y variable de cadena para la encapsulación, pero hay diferencias! El uso de comillas dobles para cadenas dice al motor de PHP que lea la cadena de contenidos y buscque las variables, y sustituirlas con sus valores. En cadenas largas que no contienen variables, pueden resultar en un rendimiento inferior.
$output = "This is the content for a very long article
which is a few hundred lines long
and goes on and on and on
... ...The End";
Cambio de las comillas dobles para una sola cita impide que el motor de PHP a partir de analizar esta cadena en un intento de ampliar las variables que, en este ejemplo, no existen:
$output = 'This is the content for a very long article
which is a few hundred lines long
and goes on and on and on
... ...The End';
Cambiar el switch / case en lugar de IF / ELSE
Utilizando declaraciones switch/case en lugar de declaraciones sueltas escrito if/else cuando se realiza la prueba en contra de una sola variable se traduce en un mejor rendimiento, facilidad de lectura, y facilidad de mantenimiento. Es importante señalar que el uso de switch/case hace una comparación suelta y debe tenerse en cuenta cuando se esté usando.
if($_POST['action'] == 'add') {
addUser();
} elseif ($_POST['action'] == 'delete') {
deleteUser();
} elseif ($_POST['action'] == 'edit') {
editUser();
} else {
defaultAction();
}
En lugar de ello, puede usar switch / case para poner a prueba contra el valor de $_POST['action']
switch($_POST['action']) {
case 'add':
addUser();
break;
case 'delete':
deleteUser();
break;
case 'edit':
editUser();
break;
default:
defaultAction();
break;
}
Recursos adicionales
Autor: Eric Higgins, para webmasters de Google
Enlaces de respuesta a lo expuesto en este artículo.
- PHP 10.0 Blog
- Make the Web Faster (Google Groups)
- y quizás puedan haber más proximamente...


0 comentarios:
Publicar un comentario en la entrada