<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	
	>
<channel>
	<title>
	Comentarios en: 20+ Consejos para optimizar tus programas PHP	</title>
	<atom:link href="https://www.dipler.org/2009/10/20-consejos-para-optimizar-tus-codigos-php/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.dipler.org/2009/10/20-consejos-para-optimizar-tus-codigos-php/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=20-consejos-para-optimizar-tus-codigos-php</link>
	<description></description>
	<lastBuildDate>Fri, 23 Jul 2021 21:14:08 +0000</lastBuildDate>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>
		Por: Alejandro Escario		</title>
		<link>https://www.dipler.org/2009/10/20-consejos-para-optimizar-tus-codigos-php/#comment-69911</link>

		<dc:creator><![CDATA[Alejandro Escario]]></dc:creator>
		<pubDate>Wed, 16 Nov 2016 17:46:02 +0000</pubDate>
		<guid isPermaLink="false">http://www.dipler.org/?p=1240#comment-69911</guid>

					<description><![CDATA[En respuesta a &lt;a href=&quot;https://www.dipler.org/2009/10/20-consejos-para-optimizar-tus-codigos-php/#comment-69899&quot;&gt;Rafa Rodriguez&lt;/a&gt;.

Efectivamente Rafa, al final es como todo en Ingeniería, es un compromiso entre varias cosas y no siempre es fácil equilibrarlo. En cada ocasión hay que valorar qué compensa, si que el código sea más rápido o más legible.]]></description>
			<content:encoded><![CDATA[<p>En respuesta a <a href="https://www.dipler.org/2009/10/20-consejos-para-optimizar-tus-codigos-php/#comment-69899">Rafa Rodriguez</a>.</p>
<p>Efectivamente Rafa, al final es como todo en Ingeniería, es un compromiso entre varias cosas y no siempre es fácil equilibrarlo. En cada ocasión hay que valorar qué compensa, si que el código sea más rápido o más legible.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Por: Rafa Rodriguez		</title>
		<link>https://www.dipler.org/2009/10/20-consejos-para-optimizar-tus-codigos-php/#comment-69899</link>

		<dc:creator><![CDATA[Rafa Rodriguez]]></dc:creator>
		<pubDate>Wed, 16 Nov 2016 15:10:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.dipler.org/?p=1240#comment-69899</guid>

					<description><![CDATA[Hola a todos:

Vean este test que hice para saber cuanto demora llamar a una funcion. Lo primero pregunta por TRUE, y lo segundo pregunta a una funcion por que devuelve TRUE.

$t = microtime(true);
for($i=0; $i&#060;100000; $i++)  if (true);
$t1 = microtime(true) - $t;
echo &#034;\n&#034;;

function isn(){return true;}

$t = microtime(true);
for($i=0; $i&#060;100000; $i++)  if (isn());
$t2 = microtime(true) - $t;
echo &#034;\n&#034;;

echo &#034;$t1\n$t2\n&#034;;
echo ($t2 /($t1+$t2) * 100);
echo &#034;\n&#034;;

El resuldato fue:

0.029117822647095
1.6365568637848
98.251890186945

Como que es mejor evitar siempre que se pueda hacer funciones (innecesarias) para todo.

Saludos,
rafa]]></description>
			<content:encoded><![CDATA[<p>Hola a todos:</p>
<p>Vean este test que hice para saber cuanto demora llamar a una funcion. Lo primero pregunta por TRUE, y lo segundo pregunta a una funcion por que devuelve TRUE.</p>
<p>$t = microtime(true);<br />
for($i=0; $i&lt;100000; $i++)  if (true);<br />
$t1 = microtime(true) &#8211; $t;<br />
echo &quot;\n&quot;;</p>
<p>function isn(){return true;}</p>
<p>$t = microtime(true);<br />
for($i=0; $i&lt;100000; $i++)  if (isn());<br />
$t2 = microtime(true) &#8211; $t;<br />
echo &quot;\n&quot;;</p>
<p>echo &quot;$t1\n$t2\n&quot;;<br />
echo ($t2 /($t1+$t2) * 100);<br />
echo &quot;\n&quot;;</p>
<p>El resuldato fue:</p>
<p>0.029117822647095<br />
1.6365568637848<br />
98.251890186945</p>
<p>Como que es mejor evitar siempre que se pueda hacer funciones (innecesarias) para todo.</p>
<p>Saludos,<br />
rafa</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Por: JRD		</title>
		<link>https://www.dipler.org/2009/10/20-consejos-para-optimizar-tus-codigos-php/#comment-60564</link>

		<dc:creator><![CDATA[JRD]]></dc:creator>
		<pubDate>Fri, 15 Jul 2016 19:18:08 +0000</pubDate>
		<guid isPermaLink="false">http://www.dipler.org/?p=1240#comment-60564</guid>

					<description><![CDATA[Solo quería dejar un simple pero agradable GRACIAS!. Muy útil su web.]]></description>
			<content:encoded><![CDATA[<p>Solo quería dejar un simple pero agradable GRACIAS!. Muy útil su web.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Por: Alejandro Escario		</title>
		<link>https://www.dipler.org/2009/10/20-consejos-para-optimizar-tus-codigos-php/#comment-693</link>

		<dc:creator><![CDATA[Alejandro Escario]]></dc:creator>
		<pubDate>Thu, 21 Nov 2013 17:26:56 +0000</pubDate>
		<guid isPermaLink="false">http://www.dipler.org/?p=1240#comment-693</guid>

					<description><![CDATA[En respuesta a &lt;a href=&quot;https://www.dipler.org/2009/10/20-consejos-para-optimizar-tus-codigos-php/#comment-692&quot;&gt;Iván&lt;/a&gt;.

Yo tampoco soy ningún experto en SQL, pero una de las cosas más ineficientes que hay son los llamados &quot;select anidados&quot;, ya que la complejidad de esta operación, según tengo entendido, crece linealmente. En cualquier caso, si lo haces en una única consulta te ahorras los tiempos de solicitud y recepción de los datos desde la base de datos.

En cuanto a la otra consulta, lo que dices tiene toda la lógica del mundo :) si haces 15 joins y 10 de ellos son contra la misma tabla, estás haciendo que el motor de BD consulte esa tabla &lt;b&gt;10 veces con diferentes condiciones&lt;/b&gt;. ¡Me lo apunto como ejemplo!

Luego le echo un vistazo a tu página ;)]]></description>
			<content:encoded><![CDATA[<p>En respuesta a <a href="https://www.dipler.org/2009/10/20-consejos-para-optimizar-tus-codigos-php/#comment-692">Iván</a>.</p>
<p>Yo tampoco soy ningún experto en SQL, pero una de las cosas más ineficientes que hay son los llamados «select anidados», ya que la complejidad de esta operación, según tengo entendido, crece linealmente. En cualquier caso, si lo haces en una única consulta te ahorras los tiempos de solicitud y recepción de los datos desde la base de datos.</p>
<p>En cuanto a la otra consulta, lo que dices tiene toda la lógica del mundo 🙂 si haces 15 joins y 10 de ellos son contra la misma tabla, estás haciendo que el motor de BD consulte esa tabla <b>10 veces con diferentes condiciones</b>. ¡Me lo apunto como ejemplo!</p>
<p>Luego le echo un vistazo a tu página 😉</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Por: Iván		</title>
		<link>https://www.dipler.org/2009/10/20-consejos-para-optimizar-tus-codigos-php/#comment-692</link>

		<dc:creator><![CDATA[Iván]]></dc:creator>
		<pubDate>Thu, 21 Nov 2013 17:14:57 +0000</pubDate>
		<guid isPermaLink="false">http://www.dipler.org/?p=1240#comment-692</guid>

					<description><![CDATA[En respuesta a &lt;a href=&quot;https://www.dipler.org/2009/10/20-consejos-para-optimizar-tus-codigos-php/#comment-691&quot;&gt;Alejandro Escario&lt;/a&gt;.

Hola:
Una consulta que note que es indiferente hacerla en varias o en una es la siguiente

SELECT
         COUNT(`accountID`) AS `accountsTotal`,
         (SELECT COUNT(`sessionID`) FROM `accounts` WHERE `sessionID` IS NOT NULL) AS `accountsOnline`,
         (SELECT COUNT(`characterID`) FROM `accounts` WHERE `characterID` IS NOT NULL) AS `accountsCharacters`,
         (SELECT COUNT(`state`) FROM `accounts` WHERE `state` = &#039;0&#039;) AS `accountsState`
FROM 
         `accounts`

La única diferencia es que ahorro tiempo de proceso a PHP (porque ya no tengo que gestionar varias consultas) además que es más sencillo porque luego no tienes que juntar los resultados.
No sé si la consulta está bien hecha o se podría perfeccionar he probado de varias formas y no he visto diferencia.

La otra consulta, seria muy larga para ponerla, pero básicamente, es recuperar datos de una tabla y como la mayor parte de esos datos son IDs es hacer JOINS para cada uno y buscar su nombre, en total tenia unos 10 o 15, y luego me di cuenta de que todos esos JOINS iban siempre a la misma tabla y decidí hacer dos consultas, y note que el tiempo mejoraba, también me permitió trabajar con esos otros datos.

P.D: no soy experto simplemente un aficionado que hace su web (puedes visitarla ^^) y dispone de un servidor bastante pequeño, y quiero que las páginas tarden lo menos posible en cargarse, al principio de todo (hace ya un par de años) hace una consulta para cada consulta a la tabla, porque no tenia ni idea de como funcionaban los JOINS, luego lo acabe entendiendo xD. Se que la respuesta también depende de como se hagan las consultas y también de como tengas hecha la base de datos, por eso siempre intento seguir la lógica humana, que es, si para un humano no es enrevesado para una maquina tampoco lo es.

Un saludo y gracias por la respuesta.]]></description>
			<content:encoded><![CDATA[<p>En respuesta a <a href="https://www.dipler.org/2009/10/20-consejos-para-optimizar-tus-codigos-php/#comment-691">Alejandro Escario</a>.</p>
<p>Hola:<br />
Una consulta que note que es indiferente hacerla en varias o en una es la siguiente</p>
<p>SELECT<br />
         COUNT(`accountID`) AS `accountsTotal`,<br />
         (SELECT COUNT(`sessionID`) FROM `accounts` WHERE `sessionID` IS NOT NULL) AS `accountsOnline`,<br />
         (SELECT COUNT(`characterID`) FROM `accounts` WHERE `characterID` IS NOT NULL) AS `accountsCharacters`,<br />
         (SELECT COUNT(`state`) FROM `accounts` WHERE `state` = &#8216;0&#8217;) AS `accountsState`<br />
FROM<br />
         `accounts`</p>
<p>La única diferencia es que ahorro tiempo de proceso a PHP (porque ya no tengo que gestionar varias consultas) además que es más sencillo porque luego no tienes que juntar los resultados.<br />
No sé si la consulta está bien hecha o se podría perfeccionar he probado de varias formas y no he visto diferencia.</p>
<p>La otra consulta, seria muy larga para ponerla, pero básicamente, es recuperar datos de una tabla y como la mayor parte de esos datos son IDs es hacer JOINS para cada uno y buscar su nombre, en total tenia unos 10 o 15, y luego me di cuenta de que todos esos JOINS iban siempre a la misma tabla y decidí hacer dos consultas, y note que el tiempo mejoraba, también me permitió trabajar con esos otros datos.</p>
<p>P.D: no soy experto simplemente un aficionado que hace su web (puedes visitarla ^^) y dispone de un servidor bastante pequeño, y quiero que las páginas tarden lo menos posible en cargarse, al principio de todo (hace ya un par de años) hace una consulta para cada consulta a la tabla, porque no tenia ni idea de como funcionaban los JOINS, luego lo acabe entendiendo xD. Se que la respuesta también depende de como se hagan las consultas y también de como tengas hecha la base de datos, por eso siempre intento seguir la lógica humana, que es, si para un humano no es enrevesado para una maquina tampoco lo es.</p>
<p>Un saludo y gracias por la respuesta.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Por: Alejandro Escario		</title>
		<link>https://www.dipler.org/2009/10/20-consejos-para-optimizar-tus-codigos-php/#comment-691</link>

		<dc:creator><![CDATA[Alejandro Escario]]></dc:creator>
		<pubDate>Thu, 21 Nov 2013 16:53:38 +0000</pubDate>
		<guid isPermaLink="false">http://www.dipler.org/?p=1240#comment-691</guid>

					<description><![CDATA[En respuesta a &lt;a href=&quot;https://www.dipler.org/2009/10/20-consejos-para-optimizar-tus-codigos-php/#comment-685&quot;&gt;Iván&lt;/a&gt;.

De todos modos, si quieres que le echemos un vistazo a tu caso concreto, no tienes más que comentármelo en más detalle ;)]]></description>
			<content:encoded><![CDATA[<p>En respuesta a <a href="https://www.dipler.org/2009/10/20-consejos-para-optimizar-tus-codigos-php/#comment-685">Iván</a>.</p>
<p>De todos modos, si quieres que le echemos un vistazo a tu caso concreto, no tienes más que comentármelo en más detalle 😉</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Por: Alejandro Escario		</title>
		<link>https://www.dipler.org/2009/10/20-consejos-para-optimizar-tus-codigos-php/#comment-690</link>

		<dc:creator><![CDATA[Alejandro Escario]]></dc:creator>
		<pubDate>Thu, 21 Nov 2013 16:51:40 +0000</pubDate>
		<guid isPermaLink="false">http://www.dipler.org/?p=1240#comment-690</guid>

					<description><![CDATA[En respuesta a &lt;a href=&quot;https://www.dipler.org/2009/10/20-consejos-para-optimizar-tus-codigos-php/#comment-685&quot;&gt;Iván&lt;/a&gt;.

Buenas tardes:

En cuanto a lo de agrupar o no consultas SQL para mejorar el rendimiento depende principalmente de dos aspectos:
&lt;b&gt;- Que esa única consulta esté bien hecha y no haga cruces innecesarios (es algo más común de lo que pueda parecer):&lt;/b&gt; no digo que sea tu caso, pero a mí sí que me ha pasado, y es que en ocasiones para ir de A a C pasamos por C y por D, cuando realmente A y B se pueden cruzar directamente o pasando sólo por C, lo que hace que la ejecución de la consulta se eternice. No sé si me explico.
&lt;b&gt;- Que los datos obtenidos por dichas consultas deban de ser cruzados:&lt;/b&gt; El tiempo de ejecución de una consulta puede ser mayor que el de hacer dos que obtengan los mismos datos, el quid de la cuestión es que si luego hay que unificar los dos dataset en uno sólo o &quot;rellenar con los dos una tabla&quot; haciendo uso de bucles, el tiempo &lt;i&gt;suele ser mayor&lt;/i&gt; que el de una única consulta.

En cualquier caso, en este mundo no existe respuesta absoluta y, si bien en este momento no me viene a la cabeza ninguna consulta que sea más eficiente hacerla en varias que en una sola, es muy probable que existan varias.

Un saludo y perdón por tardar en responder]]></description>
			<content:encoded><![CDATA[<p>En respuesta a <a href="https://www.dipler.org/2009/10/20-consejos-para-optimizar-tus-codigos-php/#comment-685">Iván</a>.</p>
<p>Buenas tardes:</p>
<p>En cuanto a lo de agrupar o no consultas SQL para mejorar el rendimiento depende principalmente de dos aspectos:<br />
<b>&#8211; Que esa única consulta esté bien hecha y no haga cruces innecesarios (es algo más común de lo que pueda parecer):</b> no digo que sea tu caso, pero a mí sí que me ha pasado, y es que en ocasiones para ir de A a C pasamos por C y por D, cuando realmente A y B se pueden cruzar directamente o pasando sólo por C, lo que hace que la ejecución de la consulta se eternice. No sé si me explico.<br />
<b>&#8211; Que los datos obtenidos por dichas consultas deban de ser cruzados:</b> El tiempo de ejecución de una consulta puede ser mayor que el de hacer dos que obtengan los mismos datos, el quid de la cuestión es que si luego hay que unificar los dos dataset en uno sólo o «rellenar con los dos una tabla» haciendo uso de bucles, el tiempo <i>suele ser mayor</i> que el de una única consulta.</p>
<p>En cualquier caso, en este mundo no existe respuesta absoluta y, si bien en este momento no me viene a la cabeza ninguna consulta que sea más eficiente hacerla en varias que en una sola, es muy probable que existan varias.</p>
<p>Un saludo y perdón por tardar en responder</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Por: Iván		</title>
		<link>https://www.dipler.org/2009/10/20-consejos-para-optimizar-tus-codigos-php/#comment-685</link>

		<dc:creator><![CDATA[Iván]]></dc:creator>
		<pubDate>Tue, 12 Nov 2013 19:25:53 +0000</pubDate>
		<guid isPermaLink="false">http://www.dipler.org/?p=1240#comment-685</guid>

					<description><![CDATA[Hola:
en el punto: 3.3.- Reducir las peticiones SQL, dices que es mejor hacer las peticiones en 1 única consulta que en varias. Bien, mi duda es (se que se me escapa algo pero no lo tengo claro)
He probado varios casos, uno en el que hacia una consulta con varios JOINS (unos 15) y otro donde hacia dos consultas (retire 10-12 JOINS y lo hice en una consulta nueva). Viendo el tiempo que tardaba antes y después de los cambios era, que en este caso es mejor hacer las dos consultas en lugar de una única consulta. (el tiempo de consulta era menor, teniendo en cuenta la suma de tiempo de las dos consulta).
El siguiente caso es: Necesitaba hacer unos COUNT, para lo cual, hacia 4 consultas (principalmente porque no sabía como hacerlo en una sola) luego buscando di con la solución, pero veo que la consulta tarda bastante.

Esto de hacer las peticiones en una única consulta, tiene sus limitaciones ¿no? en caso afirmativo, podrías decirme casos o ¿un sitio donde lo expliquen?

Un saludo]]></description>
			<content:encoded><![CDATA[<p>Hola:<br />
en el punto: 3.3.- Reducir las peticiones SQL, dices que es mejor hacer las peticiones en 1 única consulta que en varias. Bien, mi duda es (se que se me escapa algo pero no lo tengo claro)<br />
He probado varios casos, uno en el que hacia una consulta con varios JOINS (unos 15) y otro donde hacia dos consultas (retire 10-12 JOINS y lo hice en una consulta nueva). Viendo el tiempo que tardaba antes y después de los cambios era, que en este caso es mejor hacer las dos consultas en lugar de una única consulta. (el tiempo de consulta era menor, teniendo en cuenta la suma de tiempo de las dos consulta).<br />
El siguiente caso es: Necesitaba hacer unos COUNT, para lo cual, hacia 4 consultas (principalmente porque no sabía como hacerlo en una sola) luego buscando di con la solución, pero veo que la consulta tarda bastante.</p>
<p>Esto de hacer las peticiones en una única consulta, tiene sus limitaciones ¿no? en caso afirmativo, podrías decirme casos o ¿un sitio donde lo expliquen?</p>
<p>Un saludo</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Por: esc_89		</title>
		<link>https://www.dipler.org/2009/10/20-consejos-para-optimizar-tus-codigos-php/#comment-544</link>

		<dc:creator><![CDATA[esc_89]]></dc:creator>
		<pubDate>Wed, 05 Dec 2012 11:57:29 +0000</pubDate>
		<guid isPermaLink="false">http://www.dipler.org/?p=1240#comment-544</guid>

					<description><![CDATA[En respuesta a &lt;a href=&quot;https://www.dipler.org/2009/10/20-consejos-para-optimizar-tus-codigos-php/#comment-533&quot;&gt;Jonathan&lt;/a&gt;.

Realmente, no, que yo sepa, pero es muy fácil hacer un algoritmo que genere un insert en el que sólo haya 1000 filas,... 

si quieres un código de ejemplo, te lo puedo pasar]]></description>
			<content:encoded><![CDATA[<p>En respuesta a <a href="https://www.dipler.org/2009/10/20-consejos-para-optimizar-tus-codigos-php/#comment-533">Jonathan</a>.</p>
<p>Realmente, no, que yo sepa, pero es muy fácil hacer un algoritmo que genere un insert en el que sólo haya 1000 filas,&#8230; </p>
<p>si quieres un código de ejemplo, te lo puedo pasar</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		Por: Jonathan		</title>
		<link>https://www.dipler.org/2009/10/20-consejos-para-optimizar-tus-codigos-php/#comment-533</link>

		<dc:creator><![CDATA[Jonathan]]></dc:creator>
		<pubDate>Fri, 19 Oct 2012 20:44:53 +0000</pubDate>
		<guid isPermaLink="false">http://www.dipler.org/?p=1240#comment-533</guid>

					<description><![CDATA[muy buen aporte. pero la solución que das para &quot;Reducir las peticiones SQL&quot; solo acepta como máximo 1000 filas. osea que si tienes 1001 filas ya no aceptara la ultima y te mostrara un mensaje de error como el siguiente:

&lt;b&gt;The number of row value expressions in the INSERT statement exceeds the maximum allowed number of 1000 row values&lt;/b&gt;

¿hay alguna otra alternativa a ese código que pones como ejemplo?]]></description>
			<content:encoded><![CDATA[<p>muy buen aporte. pero la solución que das para «Reducir las peticiones SQL» solo acepta como máximo 1000 filas. osea que si tienes 1001 filas ya no aceptara la ultima y te mostrara un mensaje de error como el siguiente:</p>
<p><b>The number of row value expressions in the INSERT statement exceeds the maximum allowed number of 1000 row values</b></p>
<p>¿hay alguna otra alternativa a ese código que pones como ejemplo?</p>
]]></content:encoded>
		
			</item>
	</channel>
</rss>
