Foros del Web » Programando para Internet » PHP »

muchas if hacen lento la pagina?

Estas en el tema de muchas if hacen lento la pagina? en el foro de PHP en Foros del Web. Hola programadores de PHP. Les explico el problema de la que surge mi consulta. Estoy creando un modulo para joomla 3.x que tiene 4 secciones ...
  #1 (permalink)  
Antiguo 27/01/2015, 20:40
 
Fecha de Ingreso: junio-2010
Mensajes: 20
Antigüedad: 13 años, 10 meses
Puntos: 0
muchas if hacen lento la pagina?

Hola programadores de PHP. Les explico el problema de la que surge mi consulta.

Estoy creando un modulo para joomla 3.x que tiene 4 secciones y dentro de cada seccion hay muchos campos y opciones de usar imagen o icono. y ninguno es obligatorio ni las 4 secciones ni todos los campos, bien puede usar una seccion y solo algunos de sus campos.

Entonces para no cargar los contenedores de esos campos como
Código HTML:
<div> <ul> <img> <p> 
con sus respectivas clases; primero estoy haciendo consultas con
Código:
if
lo cual significa muchos de ellos. un ejemplo

Código:
<?php if ($team_1){ ?>
		<div class="col-md-<?php echo round((12 / $items_md)); ?> col-sm-<?php echo round((12 / $items_sm)); ?>">
			<div class="member-image"><img src="<?php echo ($params->get('memberimage_1')); ?>"></div>
			<h4 class="member-name"><?php echo ($params->get('membername_1'));?></h4>
			<?php if ($params->get('member_position_1')) { echo	'<p class="member-posotion">'.$params->get('member_position_1').'</p>'; }?>
			<?php if ($params->get('experience_1')) { echo '<p class="member-experience">'.$params->get('experience_1').'</p>';}?>
			<ul class="member-links">
				<?php if ($params->get('twitter_1')) { echo '<li><a href="'.$params->get('twitter_1').'"><i class="fa fa-twitter"></i></a></li>'; }?>
				<?php if ($params->get('facebook_1')) { echo '<li><a href="'.$params->get('facebook_1').'"><i class="fa fa-facebook"></i></a></li>'; }?>
				<?php if ($params->get('g_plus_1')) { echo '<li><a href="'.$params->get('g_plus_1').'"><i class="fa fa-google-plus"></i></a></li>'; }?>
				<?php if ($params->get('social_a_url_1')) { echo '<li><a href="'.$params->get('social_a_url_1').'"><i class="'.$params->get('social_a_icon_1').'"></i></a></li>'; }?>
				<?php if ($params->get('social_b_url_1')) { echo '<li><a href="'.$params->get('social_b_url_1').'"><i class="'.$params->get('social_b_icon_1').'"></i></a></li>'; }?>
			</ul>
		</div>
	<?php } ?>
La pregunta es esto sobrecarga de consultas a la base de datos y hace lenta la pagina? si es asi que puedo hacer. Muchas gracias
  #2 (permalink)  
Antiguo 27/01/2015, 22:43
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: muchas if hacen lento la pagina?

Eso depende de que haga exactamente el código que uses ahí mismo, las estructuras lógicas no son costosas en términos de rendimiento: las expresiones sí.

Precisamente sería $params->get() el cuello de botella en lo que muestras, pues representa más del 80% del código invocado múltiples veces.

¿Qué hace dicho método para ser exactos?

Ahí está tu respuesta: si dicho método hace una consulta a la base de datos cada ves que lo invocas es obvio que será costosa toda la operación.

Como supondrás esto es relativo y siempre cambiará dependiendo de lo que haga el código final.

Así que "muchas if" no hace lento nada, no te confundas.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 28/01/2015, 09:22
 
Fecha de Ingreso: junio-2010
Mensajes: 20
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: muchas if hacen lento la pagina?

Lo que estoy haciendo es para mostrar FEATURES y TEAMS en mis diseños como en la siguiente imagen.



y como se ve hay 4 miembros del equipo y para cada miembro necesito 15 campos (10 para los botones sociales (icono y enlace) 2 para imagen (icono en features y imagen en teams))

como no todos usan las mismas redes sociales entonces debe ser a elección, otros usaran imagenes otros iconos, algunos no le colocaran el cargo, otros sin descripcion o habilidades del miembro del equipo. Es por eso que hago la consulta a la base de datos con
Código:
if ($params->get('nombre_campo))
antes de mostrar ya sea div u otra etiqueta.

EL CUELLO DE BOTELLA

el codigo que mostre en mi primer mensaje solo es para un Team o feature; entonces necesito 4 de esos para todo el Team o feature, es por eso que no le he creado variables a cada consulta porque serian como 60 variables como
Código:
$icono1 = $params->get('icono_1')
$icono2 = $params->get('icono_2')
$icono3 = $params->get('icono_3')
$icono4 = $params->get('icono_4')
y asi para cada campo.

la pregunta del millon: hay alguna manera de hacer que esto se autoincremente, es decir yo creo el codigo solo para mostrar un team o feature y que si encuentra a team2 y team3 se vuelva a generar codigo pero con esos datos, sabiendo que los campos de team2 y demas son diferentes?

o hay alguna manera de eliminar etiquetas html que no tengan nada dentro?

les dejo todo el codigo aver si me pueden ayudar como veran repito doto solo con diferente nombre de campo que varia solo en _1 _2 _3 _4. desde ya muchas gracias.

PD: los campos estan en .Xml que es como trabaja joomla

Código:
defined('_JEXEC') or die;

//obligatory for all types and styles
$bg_image = $params->get('bg_image');
$bg_color = $params->get('bg_color');
$items_md = $params->get('items_row_desktop');
$items_sm = $params->get('items_row_tablet');
$items_xs = $params->get('items_row_mobile');

//TEAM variables
$team_1 = $params->get('show_team_1', 1);
$team_2 = $params->get('show_team_2', 1);
$team_3 = $params->get('show_team_3', 1);
$team_4 = $params->get('show_team_4', 1);
$team_4 = $params->get('show_team_4', 1);
?>
<div class="team" style="background-image: url(<?php echo trim($bg_image); ?>); background-color: <?php echo trim($bg_color); ?>;">
	<?php if ($params->get('team_title')) { ?>
		<h3 class="team-title"><?php echo ($params->get('team_title')); ?></h3>
	<?php } ?>

	<?php if ($params->get('team_desc')) { ?>
		<p class="team-desc"><?php echo ($params->get('team_desc')); ?></p>
	<?php } ?>

	<?php if ($team_1){ ?>
		<div class="col-md-<?php echo round((12 / $items_md)); ?> col-sm-<?php echo round((12 / $items_sm)); ?>">
			<div class="member-image"><img src="<?php echo ($params->get('memberimage_1')); ?>"></div>
			<h4 class="member-name"><?php echo ($params->get('membername_1'));?></h4>
			<?php if ($params->get('member_position_1')) { echo	'<p class="member-posotion">'.$params->get('member_position_1').'</p>'; }?>
			<?php if ($params->get('experience_1')) { echo '<p class="member-experience">'.$params->get('experience_1').'</p>';}?>
			<ul class="member-links">
				<?php if ($params->get('twitter_1')) { echo '<li><a href="'.$params->get('twitter_1').'"><i class="fa fa-twitter"></i></a></li>'; }?>
				<?php if ($params->get('facebook_1')) { echo '<li><a href="'.$params->get('facebook_1').'"><i class="fa fa-facebook"></i></a></li>'; }?>
				<?php if ($params->get('g_plus_1')) { echo '<li><a href="'.$params->get('g_plus_1').'"><i class="fa fa-google-plus"></i></a></li>'; }?>
				<?php if ($params->get('social_a_url_1')) { echo '<li><a href="'.$params->get('social_a_url_1').'"><i class="'.$params->get('social_a_icon_1').'"></i></a></li>'; }?>
				<?php if ($params->get('social_b_url_1')) { echo '<li><a href="'.$params->get('social_b_url_1').'"><i class="'.$params->get('social_b_icon_1').'"></i></a></li>'; }?>
			</ul>
		</div>
	<?php } ?>
	
	<?php if ($team_2){ ?>
		<div class="col-md-<?php echo round((12 / $items_md)); ?> col-sm-<?php echo round((12 / $items_sm)); ?>">
			<div class="member-image"><img src="<?php echo ($params->get('memberimage_2')); ?>"></div>
			<h4 class="member-name"><?php echo ($params->get('membername_2'));?></h4>
			<?php if ($params->get('member_position_2')) { echo	'<p class="member-posotion">'.$params->get('member_position_2').'</p>'; }?>
			<?php if ($params->get('experience_2')) { echo '<p class="member-experience">'.$params->get('experience_2').'</p>';}?>
			<ul class="member-links">
				<?php if ($params->get('twitter_2')) { echo '<li><a href="'.$params->get('twitter_2').'"><i class="fa fa-twitter"></i></a></li>'; }?>
				<?php if ($params->get('facebook_2')) { echo '<li><a href="'.$params->get('facebook_2').'"><i class="fa fa-facebook"></i></a></li>'; }?>
				<?php if ($params->get('g_plus_2')) { echo '<li><a href="'.$params->get('g_plus_2').'"><i class="fa fa-google-plus"></i></a></li>'; }?>
				<?php if ($params->get('social_a_url_2')) { echo '<li><a href="'.$params->get('social_a_url_2').'"><i class="'.$params->get('social_a_icon_2').'"></i></a></li>'; }?>
				<?php if ($params->get('social_b_url_2')) { echo '<li><a href="'.$params->get('social_b_url_2').'"><i class="'.$params->get('social_b_icon_2').'"></i></a></li>'; }?>
			</ul>
		</div>
	<?php } ?>
	
	<?php if ($team_3){ ?>
		<div class="col-md-<?php echo round((12 / $items_md)); ?> col-sm-<?php echo round((12 / $items_sm)); ?>">
			<div class="member-image"><img src="<?php echo ($params->get('memberimage_3')); ?>"></div>
			<h4 class="member-name"><?php echo ($params->get('membername_3'));?></h4>
			<?php if ($params->get('member_position_3')) { echo	'<p class="member-posotion">'.$params->get('member_position_3').'</p>'; }?>
			<?php if ($params->get('experience_3')) { echo '<p class="member-experience">'.$params->get('experience_3').'</p>';}?>
			<ul class="member-links">
				<?php if ($params->get('twitter_3')) { echo '<li><a href="'.$params->get('twitter_3').'"><i class="fa fa-twitter"></i></a></li>'; }?>
				<?php if ($params->get('facebook_3')) { echo '<li><a href="'.$params->get('facebook_3').'"><i class="fa fa-facebook"></i></a></li>'; }?>
				<?php if ($params->get('g_plus_3')) { echo '<li><a href="'.$params->get('g_plus_3').'"><i class="fa fa-google-plus"></i></a></li>'; }?>
				<?php if ($params->get('social_a_url_3')) { echo '<li><a href="'.$params->get('social_a_url_3').'"><i class="'.$params->get('social_a_icon_3').'"></i></a></li>'; }?>
				<?php if ($params->get('social_b_url_3')) { echo '<li><a href="'.$params->get('social_b_url_3').'"><i class="'.$params->get('social_b_icon_3').'"></i></a></li>'; }?>
			</ul>
		</div>
	<?php } ?>
	
	<?php if ($team_4){ ?>
		<div class="col-md-<?php echo round((12 / $items_md)); ?> col-sm-<?php echo round((12 / $items_sm)); ?>">
			<div class="member-image"><img src="<?php echo ($params->get('memberimage_4')); ?>"></div>
			<h4 class="member-name"><?php echo ($params->get('membername_4'));?></h4>
			<?php if ($params->get('member_position_4')) { echo	'<p class="member-posotion">'.$params->get('member_position_4').'</p>'; }?>
			<?php if ($params->get('experience_4')) { echo '<p class="member-experience">'.$params->get('experience_4').'</p>';}?>
			<ul class="member-links">
				<?php if ($params->get('twitter_4')) { echo '<li><a href="'.$params->get('twitter_4').'"><i class="fa fa-twitter"></i></a></li>'; }?>
				<?php if ($params->get('facebook_4')) { echo '<li><a href="'.$params->get('facebook_4').'"><i class="fa fa-facebook"></i></a></li>'; }?>
				<?php if ($params->get('g_plus_4')) { echo '<li><a href="'.$params->get('g_plus_4').'"><i class="fa fa-google-plus"></i></a></li>'; }?>
				<?php if ($params->get('social_a_url_4')) { echo '<li><a href="'.$params->get('social_a_url_4').'"><i class="'.$params->get('social_a_icon_4').'"></i></a></li>'; }?>
				<?php if ($params->get('social_b_url_4')) { echo '<li><a href="'.$params->get('social_b_url_4').'"><i class="'.$params->get('social_b_icon_4').'"></i></a></li>'; }?>
			</ul>
		</div>
	<?php } ?>
	
</div>

Etiquetas: lento, muchas
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 23:39.