Nueva pregunta

Pregunta:

Fecha: 11-01-2018 03:49:00 (En Español)

Usar la función unset() o no usarla, that is the question[No resuelta]

Hola compañeros,

Ando buscando información rigurosa sobre este dilema, por llamarlo así: cuál es la mejor práctica, si es mejor usar unset para eliminar las variables que no se necesitan, tanto en funciones como en scripts, o su impacto en el uso de memoria es mínimo, o bien esta función no hace nada respecto a la memoria, como también he leído.

Estoy trabajando en un tema de WordPress y me preocupa el rendimiento (como es lógico hablando de WordPress ;-), por lo que entre otras cosas me estoy acostumbrando a eliminar con unset todas las variables de gran tamaño al final de una plantilla o función.

Estoy leyendo cosas tales como http://php.net/manual/es/function.unset.php#56332 , pero también otras opiniones...

Agradezco aportes.

Saludos.
Etiquetas: Mejores Prácticas - PHP - Pregunta - WordPress Votos: 0 - Respuestas: 5 - Vistas: 15 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 12-01-2018 06:21:27 Pues te recomiendo como buena practica siempre hacerlo... sobre todo en variables globales... en funciones no tanto pues estas las eliminan/destruyen despues de haberse ejecutado la funcion...
    otra recomendacion es que te definas(hasta en lo que escribes y codigo) tus variables en un idioma, (como ejemplo el titulo del tema)
    Y en wordpress, tienen mucho problemas al agregar scripts... eso es general...
      Votos: 2 - Link respuesta
     
  • Fecha: 13-01-2018 15:15:54 Hola Ernesto.

    Yo creo que es buena práctica hacerlo siempre, dentro y fuera de funciones, una vez que ya no se necesitan.

    En WordPress está todo encapsulado en funciones, así que no tendría mucho sentido eliminar variables si seguidamente se eliminan solas. Pero por lo que he leído parece que la forma en que PHP elimina variables al salir de una función es distinta a la función unset.

    Lo otro no sé si lo he entendido, obviamente hay que usar siempre prefijos para los nombres de constantes, de variables globales y de funciones (y en estas comprobar que los nombres no existen).
      Votos: 0 - Link respuesta
     
  • Fecha: 15-01-2018 13:30:03 Fernando, muy interesante el tema.

    Cabe mencionar que el comentario al que haces referencia se hizo hace 12 años. El recolector de basura en PHP ha sufrido muchísimas mejoras desde entonces (sobre todo en PHP7).

    Creo que utilizar unset dentro de funciones o métodos está de más pero definitivamente lo usaría en el scope global.

    Si tu proceso es muy pequeño utilizar unset sería irrelevante, sin embargo si tu proceso consume muchos recursos entonces puede ser una opción utilizarlo.

    Ahora bien, muchas veces cuando un proceso consume mucha memoria es indicador de una lógica poco eficiente en el programa. En mi caso siempre que un proceso consume mucha memoria lo refactorizo y eso ha sido más que suficiente. Claro que cada caso es diferente.

    Saludos
      Votos: 1 - Link respuesta
     
  • Fecha: 15-01-2018 17:23:07 Hola Ernesto,

    Sí, el tema es interesante y parece que bastante desconocido.

    Sobre WordPress, a las variables globales como $wp_query no se les puede tocar, y parece que solo esta consume recursos por un tubo.

    Al desarrollar un tema se hace uso del core y poco más, y todo a través de funciones, no hay consultas adicionales a la base de datos, salvo las opciones del tema que no creo que consuman mucho. Es una sola entrada json que decodifico y después uso el array con global en cada plantilla (leyendo cada opción en otra variable).

    Como "anécdota" solo la función body_class() de WordPress, para añadir las clases por defecto a la etiqueta body hace "500" llamadas a otras funciones y todas acaban consultando $wp_query. Creo que es un armatoste bastante mejorable, aunque entiendo que es muy complicado por la retro-compatibilidad.

    De todas formas es mi opinión, yo de consumo de procesador y memoria sé poco.

    Entiendo que el código debe estar lo más optimizado posible en cuanto a instrucciones, consultas y variables que se usan, y que lógicamente no es lo mismo una consulta de todos los registros, que un array, que un valor booleano, y dónde se usen, si al principio o al final de la petición.

    De refactorizar... me canso y ya he terminado, jeje.

    Por lo que dices, PHP elimina efectivamente las variables al terminar una función? No es necesario usar unset? Sigo usando la versión 5.6 creo.

    Saludos!
      Votos: 0 - Link respuesta
     
  • Fecha: 16-01-2018 06:28:08 En lo personal WordPress no es de mi gusto para nada... ya que consume demasiados recursos para unas cosas pequeñas, agrégale que en su mayoría los scripts llevan códigos ocultos, para beneficio de quien los realizo... Por ello prefiero hacer mis cosas...
    Y estoy de acuerdo en comentarios anteriores solo si tu proceso es robusto entonces si, pero también debes tomar en cuenta la cantidad de usuarios, en mi caso estoy desarrollando un sistema con archivos DICOM, y eso se debe tomar en cuenta, pues el convertirlos a jpg, video, o leer sus tags, consumen algo (no mucho) pero limita a pocos usuarios...
    Al final son muchos factores el cual hacerlo , y en lo personal, deberás hacerlo con poco o muchos recursos ocupados, pocos o muchos usuarios , pues es una buena practica y no estará de mas...
    Saludos...
    Stryfe™
      Votos: 0 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión