Si programan en PHP les aconsejo que lean estos consejos para mejorar su programación en PHP. Estos son los consejos que todo programador en PHP debe y tiene que tener en cuenta a la hora de programar:
1. Inicializa las variables antes de utilizarlas.
2. Incrementar una variable global es dos veces mas lento que una variable local.
3. Declarar una variable global realentiza tu script.
4. Usar ip2long() y long2ip() para almacenar direcciones IPs como enteros en lugar de cadenas en la base de datos. Esto reducirá el espacio de almacenamiento en cuatro veces (15 bytes por carácter char(15) contra 4 bytes del entero), además de facilitar el calcular cuanto una dirección entra en un rango, y acelerar las busquedas y ordenaciones.
5. Validar direcciones de email mediante checkdnsrr(). Es una función de PHP que comprueba si un dominio existe.
6. Si usas PHP 5 con MySQL 4.1 o superior, deberías utilizar las funciones de mysqli_ en lugar de mysql_, ya que son más rápidas y puedes utilizar hasta sentencias preparadas.
7. Utiliza el operador ternario.
8. Utilizar PEAR para no tener que programar funciones ya programadas.
9. Prevenir que el sistema proporcione mensajes de error al usuario utilizando la función error_reporting(0), cuando programamos los mensajes de error son útiles, pero el usuario final no debería verlos.
10. Utilizar gzcompress() y gzuncompress() para almacenar cadenas largas en la base de datos, esto puede ahorrarnos hasta un 90% de espacio.
11. Devolver múltiples valores de una función pasándolos mediante referencia.
12. Comprender el peligro de utilizar magic_quotes y la inyección SQL.
13. Utilizar Smarty o algún otro motor de plantillas para separar la lógica de la presentación, ahorrarás muchos dolores de cabeza.
14. Sustituir $i++; por ++$i;
15. Sustituir $i += 1; por ++$i;
16. Sustituir rand($min,$max); por mt_rand($min,$max);
17. Sustituir $i = 0; while($array[$i]){ ++$i; } por $i = 0; $count = count($array); while($i < $count){ ++$i; }
18. Utilizar echo en lugar de print como salida de resultados.
19. Sustituir ob_start(); echo ‘..’; ob_end_flush(); por ob_start(); print ‘..’; ob_end_flush();
20. Escribir una cadena con etiquetas HTML o algún otro texto fijo directamente, sin utilizar echo ni print
21. Sustituir include(’output/contain_no_php’); por readfile(’output/contain_no_php’);
22. Sustituir echo “$variable cadena “; por echo $variable.’cadena’;
23. Emplear variables en lugar de contantes.
24. Siempre utilizar una función existente en PHP antes de crearla por nosotros mismos.
25. Las operaciones en formato expandido son habitualmente más lentas.
26. Utilizar triple = para los if
27. En un if siempre que hagamos una comparación de una variable con un valor constante, colocar primero el valor constante que la variable. Ejem: if(10 == $x)
28. Crea tu propios manejadores de error, utiliza set_error_handler(’funcion_que_maneja_errores’);
29. Cada vez que llamas a una página se llama al compilador y se vuelve a procesar, aunque no haya cambiado. Si se cachean los objetos de PHP, la primera vez se compilaría y la siguiente se usaría la compilada. Una herramienta gratuita que nos permite realizarlo es Turck MMCache for PHP.
30. Desactiva el acceso a ficheros remotos, en php.ini: allow_url_fopen = Off
31. Desactiva también register_globals, en php.ini: register_globals = Off
32. Restringe a qué ficheros puede acceder PHP, en php.ini: open_basedir = /www/ficheros
33. Activa el modo seguro en PHP, en php.ini: safe_mode = Off safe_mode_gid = On
34. Al activar el modo seguro no se pueden ejecutar ficheros binarios, por lo que deberás indicar donde se situan los binarios que si se pueden ejecutar, en php.ini: safe_mode_exec_dir = /www/ejecutables
35. Tampoco está permitido acceder a variables de entorno en el modo seguro, pero se puede inluir una lista (separada por comas) de prefijos que se permiten para estas variables, en php.ini: safe_mode_allowed_env_vars = PHP_
36. Evitar la ejecución de la shell, en php.ini: disable_functions = system, exec, shell_exec, passthru, pcntl_exec, putenv, proc_close, proc_get_status, proc_nice, proc_open, proc_terminate, popen, pclose, set_time_limit, ini_alter, virtual, openlog, escapeshellcmd, escapeshellarg, dl, curl_exec, parse_ini_file, show_source.
37. Trata de tener la mayoría de la BD en memoria, usando para ello memcached.
38. Utiliza clases para realizar los accesos a la base de datos, por ejemplo PEAR DB, es más seguro y flexible a la hora de cambiar de unab ase de datos, por ejemplo de MySQL a SQLite.
39. Require es más rapido que require_once, lo mismo pasa con include e include_once
40. Comprobar que todas las variables, sobre todo las obtenidas mediante $_GET y $_POST son válidas, para ello puedes emplear expresiones regulares.
41. No poner a los archivos importantes nombres simples como config.php, etc… ni en carpetas simples como includes/config.php y cosas así.
42. En las consultas MySQL seleccionar sólo los campos que necesitemos extraer de la base de datos, no todos.
43. Sí sólo quieres extraer una fila utiliza LIMIT 1, para que al encontrarla no siga buscando más.
44. Utiliza mysql_fetch_assoc para extraer los resultados de una variable al realizar una consulta MySQL, ya que al utilizar mysql_fetch_array se extrae la información en un array el doble de largo.
45. Utiliza valores por defectos y NOT NULL en tu base de datos, hará las consultas e inserciones más rápidas.
46. Intenta no concatenar texto cuando no sea necesario.
47. Utiliza la comilla simple (’) en vez de la comilla doble (”) siempre que no vayas a usar variables dentro, la comilla doble hace que el intérprete analice lo que hay dentro de las comillas, además a la hora de concatenar es más rápido también utilizar comillas simples.
48. Cuando uses echo, separa los strings por comas mejor que con puntos, es más rápido. Esto solo funciona con echo.
49. Indica el valor máximo para tus bucles for fuera del bucle en vez de dentro del bucle, porque si no, se evaluará la expresión en cada pasada del bucle.
50. Libera variables siempre que puedas, sobre todo arrays pesados.