Foros del Web » Programando para Internet » PHP »

En dónde se almacenan las varibles?

Estas en el tema de En dónde se almacenan las varibles? en el foro de PHP en Foros del Web. Quisiera saber si el valor de una variable (en bytes) se almacena en RAM del servidor o dónde? Sé que las variables de sesion se ...
  #1 (permalink)  
Antiguo 30/04/2013, 09:57
 
Fecha de Ingreso: agosto-2010
Mensajes: 105
Antigüedad: 13 años, 8 meses
Puntos: 3
En dónde se almacenan las varibles?

Quisiera saber si el valor de una variable (en bytes) se almacena en RAM del servidor o dónde?
Sé que las variables de sesion se almacenan en un txt temporal en el servidor.
La pregunta es por que necesito leer el valor de unas 100 variables en cada página de una intranet (unas 30 páginas con unos 50 usuarios) y quiero saber si me conviene (por fluidéz) leer un archivo que contenga las 100 varibles con un "require" o solo una vez con varible de sesion y tenerlas disponibles en todo el sitio...

Gracias!
  #2 (permalink)  
Antiguo 30/04/2013, 10:03
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: En dónde se almacenan las varibles?

Sea como sea, al momento de usar variables todo se carga en memoria, las variables normales no se almacenan en ningún lado.

PHP es un lenguaje stateless y en cada petición libera los recursos utilizados, en el caso de las sesiones simplemente las guarda como dices pero no es así con todas.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 30/04/2013, 10:03
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años
Puntos: 47
Respuesta: En dónde se almacenan las varibles?

Mira cual es el objetivo??

Las variables se almacenan en memoria... ok pero que con eso??

Exactamente cual es tu duda o el porque querer saber si leer memoria o archivo???
  #4 (permalink)  
Antiguo 30/04/2013, 10:12
 
Fecha de Ingreso: agosto-2010
Mensajes: 105
Antigüedad: 13 años, 8 meses
Puntos: 3
Respuesta: En dónde se almacenan las varibles?

Gracias, solo por "cultura" general. Para las dimensiones de mi proyecto cualquiera de las dos me responderán rápidamente, pero en algo grande sería interesante saber qué es mejor.
Creo que la respuesta se iría a la configuración del servidor mismo...

Lo ideal sería que el cliente los almacenara para liberar recursos pero creo que ahi sería con javascripts
Saludos
  #5 (permalink)  
Antiguo 30/04/2013, 10:17
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: En dónde se almacenan las varibles?

Aún no empiezas y ya te estás preocupando, ¿sabes cómo se le dice a eso?

Optimización prematura, ni por "cultura" general tu tema es de utilidad, no tiene razón de ser.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 30/04/2013, 10:37
 
Fecha de Ingreso: agosto-2010
Mensajes: 105
Antigüedad: 13 años, 8 meses
Puntos: 3
Respuesta: En dónde se almacenan las varibles?

gracias. entonces me preocuparé despues de hacer el sistema...
  #7 (permalink)  
Antiguo 30/04/2013, 10:40
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: En dónde se almacenan las varibles?

Cita:
Iniciado por jctoledo Ver Mensaje
gracias. entonces me preocuparé despues de hacer el sistema...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 30/04/2013, 14:48
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: En dónde se almacenan las varibles?

Problema clásico para memcache, o, si lo que tienes es algo como un array asociativo, en vez de hacer include...tener serializado el array en fichero, y deserializarlo.Es mucho más rápido que include().
  #9 (permalink)  
Antiguo 30/04/2013, 15:03
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: En dónde se almacenan las varibles?

Cita:
Iniciado por dashtrash Ver Mensaje
Es mucho más rápido que include().
¿De verdad?

Oye pues me gustaría ver los benchmarks, me queda la duda.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 30/04/2013, 15:09
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: En dónde se almacenan las varibles?

No te quepa duda.Una variable serializada a fichero es *mucho* más rápida que include.Ten en cuenta que usa el parser de serialización, muchisimo más simple que el parser del lenguaje.Yo lo uso constantemente.
  #11 (permalink)  
Antiguo 30/04/2013, 15:10
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: En dónde se almacenan las varibles?

Quiero ver los benchmarks.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #12 (permalink)  
Antiguo 30/04/2013, 16:35
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: En dónde se almacenan las varibles?

Entiendo que para este tema hacer un benchmark por uno mismo es demasiado complejo Aparte, faltaría más, siempre tengo ficheros de benchmark conmigo, asi que no me importa compartirlo..

Fichero "included.php"

Código PHP:
Ver original
  1. <?php
  2. $a = array(
  3. "p"=>1,"p1"=>1,"p2"=>1,"p3"=>1,"p4"=>1,"p5"=>1,"p6"=>1,"p7"=>1,"p8"=>1,"p9"=>1,"p10"=>1,"p11"=>2,
  4. "a"=>1,"a1"=>1,"a2"=>1,"a3"=>1,"a4"=>1,"a5"=>1,"a6"=>1,"a7"=>1,"a8"=>1,"a9"=>1,"a10"=>1,"a11"=>2,
  5. "b"=>1,"b1"=>1,"b2"=>1,"b3"=>1,"b4"=>1,"b5"=>1,"b6"=>1,"b7"=>1,"b8"=>1,"b9"=>1,"b10"=>1,"b11"=>2,
  6. "c"=>1,"c1"=>1,"c2"=>1,"c3"=>1,"c4"=>1,"c5"=>1,"c6"=>1,"c7"=>1,"c8"=>1,"c9"=>1,"c10"=>1,"c11"=>2,
  7. "d"=>1,"d1"=>1,"d2"=>1,"d3"=>1,"d4"=>1,"d5"=>1,"d6"=>1,"d7"=>1,"d8"=>1,"d9"=>1,"d10"=>1,"d11"=>2,
  8. "e"=>"asigno cadena","e1"=>"asigno cadena","e2"=>"asigno cadena","e3"=>"asigno cadena","e4"=>"asigno cadena","e5"=>"asigno cadena","e6"=>"asigno cadena","e7"=>"asigno cadena","e8"=>"asigno cadena","e9"=>"asigno cadena","e10"=>"asigno cadena","e11"=>2,
  9. "f"=>"asigno cadena","f1"=>"asigno cadena","f2"=>"asigno cadena","f3"=>"asigno cadena","f4"=>"asigno cadena","f5"=>"asigno cadena","f6"=>"asigno cadena","f7"=>"asigno cadena","f8"=>"asigno cadena","f9"=>"asigno cadena","f10"=>"asigno cadena","f11"=>2,
  10. "g"=>"asigno cadena","g1"=>"asigno cadena","g2"=>"asigno cadena","g3"=>"asigno cadena","g4"=>"asigno cadena","g5"=>"asigno cadena","g6"=>"asigno cadena","g7"=>"asigno cadena","g8"=>"asigno cadena","g9"=>"asigno cadena","g10"=>"asigno cadena","g11"=>2,
  11. "h"=>"asigno cadena","h1"=>"asigno cadena","h2"=>"asigno cadena","h3"=>"asigno cadena","h4"=>"asigno cadena","h5"=>"asigno cadena","h6"=>"asigno cadena","h7"=>"asigno cadena","h8"=>"asigno cadena","h9"=>"asigno cadena","h10"=>"asigno cadena","h11"=>2,
  12. "i"=>"asigno cadena","i1"=>"asigno cadena","i2"=>"asigno cadena","i3"=>"asigno cadena","i4"=>"asigno cadena","i5"=>"asigno cadena","i6"=>"asigno cadena","i7"=>"asigno cadena","i8"=>"asigno cadena","i9"=>"asigno cadena","i10"=>"asigno cadena","i11"=>2,
  13. "j"=>"asigno cadena","j1"=>"asigno cadena","j2"=>"asigno cadena","j3"=>"asigno cadena","j4"=>"asigno cadena","j5"=>"asigno cadena","j6"=>"asigno cadena","j7"=>"asigno cadena","j8"=>"asigno cadena","j9"=>"asigno cadena","j10"=>"asigno cadena","j11"=>2
  14. );
  15.  
  16. ?>

Fichero benchmark.php

Código PHP:
Ver original
  1. <?php
  2.   $start=microtime(true);
  3.   for($k=0;$k<1000;$k++)
  4.         include("included.php");
  5.   $includeTime=microtime(true)-$start;
  6.  
  7.   file_put_contents("serialized.txt",serialize($a));
  8.   $start=microtime(true);
  9.   for($k=0;$k<1000;$k++)
  10.         $a=unserialize(file_get_contents("serialized.txt"));
  11.   $unserializeTime=microtime(true)-$start;
  12.  
  13.   echo "RESULTS:".$includeTime." -- ".$unserializeTime;

Resultado en mi ordenador : :0.42343997955322 -- 0.19084310531616
Más del doble de rápido el deserializar que el incluir.
  #13 (permalink)  
Antiguo 30/04/2013, 16:48
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: En dónde se almacenan las varibles?

¡Excelente!

Qué bueno que tenías algún que otro benchmark, lo he comprobado, gracias.

Usar datos serializados es mucha más rápido que en notación de PHP.



Edito: alteré el script de datos y me da otros resultados.
Código PHP:
<?php
$a 
= array(
"p"=>1,"p1"=>1,"p2"=>1,"p3"=>1,"p4"=>1,"p5"=>1,"p6"=>1,"p7"=>1,"p8"=>1,"p9"=>1,"p10"=>1,"p11"=>2,
"a"=>1,"a1"=>1,"a2"=>1,"a3"=>1,"a4"=>1,"a5"=>1,"a6"=>1,"a7"=>1,"a8"=>1,"a9"=>1,"a10"=>1,"a11"=>2,
"b"=>1,"b1"=>1,"b2"=>1,"b3"=>1,"b4"=>1,"b5"=>1,"b6"=>1,"b7"=>1,"b8"=>1,"b9"=>1,"b10"=>1,"b11"=>2,
"c"=>1,"c1"=>1,"c2"=>1,"c3"=>1,"c4"=>1,"c5"=>1,"c6"=>1,"c7"=>1,"c8"=>1,"c9"=>1,"c10"=>1,"c11"=>2,
"d"=>1,"d1"=>1,"d2"=>1,"d3"=>1,"d4"=>1,"d5"=>1,"d6"=>1,"d7"=>1,"d8"=>1,"d9"=>1,"d10"=>1,"d11"=>2,
"e"=>str_repeat("asigno cadena"1000),"e1"=>str_repeat("asigno cadena"1000),"e2"=>str_repeat("asigno cadena"1000),"e3"=>str_repeat("asigno cadena"1000),"e4"=>str_repeat("asigno cadena"1000),"e5"=>str_repeat("asigno cadena"1000),"e6"=>str_repeat("asigno cadena"1000),"e7"=>str_repeat("asigno cadena"1000),"e8"=>str_repeat("asigno cadena"1000),"e9"=>str_repeat("asigno cadena"1000),"e10"=>str_repeat("asigno cadena"1000),"e11"=>2,
"f"=>str_repeat("asigno cadena"1000),"f1"=>str_repeat("asigno cadena"1000),"f2"=>str_repeat("asigno cadena"1000),"f3"=>str_repeat("asigno cadena"1000),"f4"=>str_repeat("asigno cadena"1000),"f5"=>str_repeat("asigno cadena"1000),"f6"=>str_repeat("asigno cadena"1000),"f7"=>str_repeat("asigno cadena"1000),"f8"=>str_repeat("asigno cadena"1000),"f9"=>str_repeat("asigno cadena"1000),"f10"=>str_repeat("asigno cadena"1000),"f11"=>2,
"g"=>str_repeat("asigno cadena"1000),"g1"=>str_repeat("asigno cadena"1000),"g2"=>str_repeat("asigno cadena"1000),"g3"=>str_repeat("asigno cadena"1000),"g4"=>str_repeat("asigno cadena"1000),"g5"=>str_repeat("asigno cadena"1000),"g6"=>str_repeat("asigno cadena"1000),"g7"=>str_repeat("asigno cadena"1000),"g8"=>str_repeat("asigno cadena"1000),"g9"=>str_repeat("asigno cadena"1000),"g10"=>str_repeat("asigno cadena"1000),"g11"=>2,
"h"=>str_repeat("asigno cadena"1000),"h1"=>str_repeat("asigno cadena"1000),"h2"=>str_repeat("asigno cadena"1000),"h3"=>str_repeat("asigno cadena"1000),"h4"=>str_repeat("asigno cadena"1000),"h5"=>str_repeat("asigno cadena"1000),"h6"=>str_repeat("asigno cadena"1000),"h7"=>str_repeat("asigno cadena"1000),"h8"=>str_repeat("asigno cadena"1000),"h9"=>str_repeat("asigno cadena"1000),"h10"=>str_repeat("asigno cadena"1000),"h11"=>2,
"i"=>str_repeat("asigno cadena"1000),"i1"=>str_repeat("asigno cadena"1000),"i2"=>str_repeat("asigno cadena"1000),"i3"=>str_repeat("asigno cadena"1000),"i4"=>str_repeat("asigno cadena"1000),"i5"=>str_repeat("asigno cadena"1000),"i6"=>str_repeat("asigno cadena"1000),"i7"=>str_repeat("asigno cadena"1000),"i8"=>str_repeat("asigno cadena"1000),"i9"=>str_repeat("asigno cadena"1000),"i10"=>str_repeat("asigno cadena"1000),"i11"=>2,
"j"=>str_repeat("asigno cadena"1000),"j1"=>str_repeat("asigno cadena"1000),"j2"=>str_repeat("asigno cadena"1000),"j3"=>str_repeat("asigno cadena"1000),"j4"=>str_repeat("asigno cadena"1000),"j5"=>str_repeat("asigno cadena"1000),"j6"=>str_repeat("asigno cadena"1000),"j7"=>str_repeat("asigno cadena"1000),"j8"=>str_repeat("asigno cadena"1000),"j9"=>str_repeat("asigno cadena"1000),"j10"=>str_repeat("asigno cadena"1000),"j11"=>2
);

?>
Resultados:
Cita:
0.34629893302917 -- 0.46708917617798
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #14 (permalink)  
Antiguo 30/04/2013, 18:54
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: En dónde se almacenan las varibles?

Entonces:

- Variables relativamente sencillas: Mejor con serialize
- Gran cantidad de datos: Mejor con include

¿?
__________________
- León, Guanajuato
- GV-Foto
  #15 (permalink)  
Antiguo 01/05/2013, 03:41
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: En dónde se almacenan las varibles?

Cita:
Iniciado por pateketrueke Ver Mensaje
¡Excelente!
Edito: alteré el script de datos y me da otros resultados.
Sólo en cadenas de texto, el tamaño de variables debe ser de unos 390Kb.
Yo utilizo esta técnica en ficheros de configuración "reales" (metadata de clases para ORMS, metadata de formularios, datasources, páginas..).
En esos ficheros se cumple a lo que me refería al principio: el parser de serialize es mucho más rápido que el de PHP.Cuando serializas supongo que unos 400Kb, por muy rápido que se el parser, son 400Kb de texto...Va a ser más lento que el parseo de un PHP mucho más pequeño.

Pero, si te fijas,no es exactamente el mismo caso.Los ficheros serializados los puedes usar fácilmente cuando no hay cálculos (o llamadas a funciones) envueltos en la definición del array.Ficheros de configuración, metadata de objetos (Doctrine almacena metadata en XML, YAML y comentarios...se les encenderá en algún momento la bombillita?).
Cuando para el cálculo de la variable almacenada en el fichero serializado, necesitaras llamadas a funciones, etc, el uso de la serialización está descartado desde el principio.
  #16 (permalink)  
Antiguo 05/05/2013, 11:43
Avatar de bulter  
Fecha de Ingreso: enero-2008
Mensajes: 137
Antigüedad: 16 años, 3 meses
Puntos: 20
Respuesta: En dónde se almacenan las varibles?

Aquí si no me equivoco yo, no hay sentido de hacer un benchmark a include y file_get_contents Lo primero es que ni siquiera hacen lo mismo. Es normal que include tarde muchísimo mas file_get_contents. include tiene que evaluar el contenido del archivo y ejecutarlo por el PHP interpretador y tambien usa include_path para encontrar los archivos asi que es logico de que sea mas lento, mientras que file_get_contents lo unico que hara es tratar el archivo como un string normal. :/

Etiquetas: usuarios, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:05.