PHP - Escrito por Juan Gabriel Covas el Lunes, 27 de Octubre de 2008 a las 14:09 pm - Sin comentarios
Curiosidades prácticas de programación en PHP
En este artículo recopilo algunos trucos, consejos o “tips” que he ido encontrando. Me fueron muy útiles mientras aprendía PHP, o buscando información sobre optimización y mejoras de rendimiento.
Si nos da igual que los datos nos entren por POST o GET, podemos usar $_REQUEST['name'] en vez de leer específicamente $_POST['name'] o $_GET['name']
PHP genera automáticamente un Content-type: text/html, siempre que no indiquemos cualquier otro usando la función header()
Ámbito de las variables globales en las funciones: Una variable utilizada en una función es de ámbito local SIEMPRE a no ser que se declare en el ámbito de la función como “global”.
$string="ABC";
$string{1}=="B"
$my_array = array('A','B','C');
$my_array[1]=="B";
Include o Require: Si falla un Require se produce un error que termina la ejecución del código, mientras que include sólo produce un aviso y se continúa con el script. Un Require se incluye y procesa SIEMPRE, con independencia del lugar del código donde se encuentre, mientras que con
Include sólo se incluirá el fichero, y se procesará, SI SE ENTRA en el bloque de código en el que se ejecuta la orden. “Require” incrusta el fichero indicado sin importar la extensión, como código PHP a ser ejecutado justo en el momento y lugar de su llamada.
El operador “idéntico” === se puede utilizar para comprobar que, si $entero=0 y $st=”0″, $entero==$st pero NO $entero===$st. Hay que tener en cuenta que es más lento.
Se puede utilizar foreach como en Perl y switch como en C.
Podemos forzar el tipo de variable al indicar el elemento de un array…
Por ejemplo:
$indice_cadena = "34"; $array_de_valores[(int) $indice_cadena] ya que: $array_de_valores[$indice_cadena] sería distinto.
Suprimir los “echos” de error del PHP para funciones específicas. Simplemente se precede el nombre de función con una @ Por ejemplo:
$filehandle = @fopen(“fichero.txt”, “r”)…
Manejar archivos. De forma muy similar a C…
$filepointer = fopen(“$DOCUMENT_ROOT/../folder_outside_httpdocs/data.txt”, “w”);
fwrite(filepointer, data, bytes);
Archivos: System Locking con flock($filepointer, FLAG);
Siendo los FLAGS:
1/LOCK_SH bloqueo de lectura, permitida lectura exclusiva simultánea
2/LOCK_EX bloqueo de escritura, por tanto no permitida ni la escritura ni la lectura simultánea
3/LOCK_UN desbloquear
La redirección http más rápida que podemos efectuar en nuestro script después de realizar una serie de operaciones, es utilizar la cabecera http “Location” con header(). Por ejemplo header(“Location: http://www.dominio.com/otrolugar”); Recordar siempre salir inmediatamente después con exit();
Si no necesitamos expresiones regulares, es más rápido obtener un array usando explode(…) que con split(…)
Añadir un sólo elemento al final de un array es más rápido usando
$miarray[]=$nuevo_elemento;
que utilizar array_push(…)
Si un método puede ser estático, decláralo estático. El incremento de velocidad es x4
Echo es más rápido que print.
Si necesitas averiguar la longitud de una cadena, o si está vacía, es mucho más rápido hacer if (!isset($foo{5})) { echo “Foo demasiado corta”; } que usar strlen como aquí: if (strlen($foo) < 5) { echo “Foo demasiado corta”; }
Usar require_once() sólo si no hay más remedio: es más lento que require.
Utiliza paths (rutas) completos en includes y requires, menos tiempo gastado en resolver los paths del sistema.
Si te interesa, el timestamp de la petición está en $_SERVER[’REQUEST_TIME’] que suele ser distinto que llamar a la función time() al principio del script.
str_replace es más rápido que preg_replace, pero strtr es 4 veces más rápido que str_replace
Utilizar $row[’id’] es 7 veces más rápido que usar $row[id]
Incrementar una variable global es 2 veces más lento que incrementar una local
Incrementar la propiedad de un objeto ($this->prop++) es 3 veces más lento que incrementar una local
Incrementar una variable local sin definir es 9-10 veces más lento que una pre-inicializada.
Usar comilla simple ‘ en lugar de la doble ” en tus cadenas hará las cosas un poco más rápidas, ya que entre comillas simples no se buscarán variables. Por supuesto, hazlo solo cuando no necesites variables en tu cadena.
RECOMENDAMOS:
LO MAS RECIENTE
- Los juegos PIPO en inglés, en PipoGames.com
- MySQL: Cómo hacer una copia de seguridad de todas las bases de datos
- De cómo recuperé una cuenta de messenger después del robo de contraseña
- Muzikomio: descargar la mejor música alternativa de sellos independientes
- Solución: messenger no recuerda la contraseña después de reiniciar (messenger, internet explorer, etc)
- Drivers para RAID ULI220 M1575 – M5288 (Nvidia)
- INND: Cómo montar tu propio servidor de news privado
- PopMonger: Cómo procesar automáticamente los rebotes de correo o “message bounces”
- Vaya Fiasco de Fiasco Awards
- Primeros pasos con un servidor linux remoto… nos dan acceso, ¿y ahora qué?
- Securizando el entorno Linux del servidor
- excelente programa no saben lo que me han ayudado gracias...
- a mi me sale es error en un server x86_64 con centos y mysql 5.x
MEMORY USAGE...
- Excelente ayuda, ahora mi consulta seria como poder acceder desde CentOS a Wind...
- excelente, me partio un archivo de 4.8 gb con 14 millones de registros y en muy ...
- Acabo de probarlo con un archivo de 3 GB y lo particionó muy rápido.
Excelent...
- el archivo era de 1.4 gb y me generó archivos de 64000 lineas 4 mb sin problemas...
- @Luix: Sí, XCache es lo mismo que EAccelerator, una "caché de opcode para PHP", ...
- Hola un saludo cordial. Buena tu guia, tengo una pregunta, xcache me puede servi...
Software - 29 / Mar / 09 - Sin comentarios
PopMonger: Cómo procesar automáticamente los rebotes de correo o “message bounces”
MÁS EN Software
- Cómo crear imágenes GIF animados fácilmente con UnFREEz
- Gif Color Mapper: cambiar un color por otro a cientos de archivos
- PIPO: los juegos para niños de más éxito
- Thunderbird: 3 razones para usar este cliente de correo electrónico
- PaintShopPro 9: El photoshop para programadores
MySQL - 6 / Oct / 09 - Sin comentarios
MySQL: Cómo hacer una copia de seguridad de todas las bases de datos
MÁS EN Servidores
- INND: Cómo montar tu propio servidor de news privado
- Primeros pasos con un servidor linux remoto… nos dan acceso, ¿y ahora qué?
- Securizando el entorno Linux del servidor
- Optimizando MySQL: Tuning-Primer y el archivo de configuración my.cnf
- Afinando la conexión a Secure Shell (SSH)
MundoGeek - 5 / Oct / 09 - Sin comentarios
De cómo recuperé una cuenta de messenger después del robo de contraseña
MÁS EN MundoGeek
- Muzikomio: descargar la mejor música alternativa de sellos independientes
- Solución: messenger no recuerda la contraseña después de reiniciar (messenger, internet explorer, etc)
- Drivers para RAID ULI220 M1575 – M5288 (Nvidia)
- Vaya Fiasco de Fiasco Awards
- Iluminar filas de una tabla con CSS
Hacer un comentario
Debes iniciar sesión para hacer un comentario.