by nax
Ayer hablabamos que el
compilador de PHP era un JIT.
Hoy podemos obtener más información gracias a vivaPHP!
Según el ingeniero Haiping Zhao, HipHop for PHP les permitió
reducir un 50% el uso de sus CPU lo cual implica un mejor rendimiento en la aplicación Facebook.
Hip Hop for PHP lleva ya 2 años de desarollo, pero reconocen que aún no está finalizado y que la actual versión puede considerarse
una beta.
Se ha liberado bajo la misma
licencia de PHP lo que permitirá a la comunidad acabar el desarollo de la aplicación dando su punto de vista y sus ideas.
Zhao nos explica que es realmente HipHop:
“HipHop no es técnicamente un compilador. En su lugar es un transformador de código. HipHop transforma tu código fuente PHP en un altamente optimizado código C++ y luego usa g++ (GNU C++) para compilarlo. HipHop ejecuta el código fuente en una manera semánticamente equivalente y sacrifica algunas características raramente usadas -como eval()- a cambio de una performance mejorada. HipHop incluye el transformador de código, una reimplementación del runtime de PHP y una re-escritura de varias extensiones de PHP comunes para aprovechar estas optimizaciones”.
Fuente: vivaPHP!
by nax
Bueno he avierto otro post porque en el otro hay muchos comentarios de todo tipo, no se si aún lo necesias pero como hace poco me pidieron lo mismo te dejo el trabajo:
El sistema de comentarios estaba pensado para funcionar igual en diferentes secciones de la web... compartiendo tablas de la DB y solo modificando un campo entre las diferentes secciones.
SQL:
CREATE TABLE IF NOT EXISTS `web_michelmin` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`autor` varchar(50) NOT NULL,
`hora` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`comentario` text NOT NULL,
`seccion` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
<?php
#~~ Connect.php
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'z_test'; //nombre de la bd
$tabla = 'web_michelmin'; //nombre de la tabla a usar
$con = mysql_connect($host, $user, $pass) or die(mysql_error());
mysql_select_db($db,$con) or die(mysql_error());
?>
Parte que se agrega a la página:
<?php
session_start();
#~~ Comentarios a final de página;
include_once('conect.php');
$seccion = 'index'; //Nombre que le quieras dar a ala seccion
$comentarios = mysql_query("SELECT comentario, autor FROM ".$tabla." WHERE seccion = '".$seccion."' ", $con) or die(mysql_error());
echo '<table border="1">';
while ($coments = mysql_fetch_array($comentarios)) {
echo '<tr><td colspan="2"><sub><strong>'.$coments['autor'] .'</strong></sub></td></tr>
<tr><td colspan="2">'. nl2br(htmlentities($coments['comentario'])) . '</td></tr>';
}
echo '<tr><td colspan="2"></td>
</tr><tr><td colspan="2">Escribe tu comentario: </td></tr>
<tr><td colspan="2">
<form method="post" action="update.php">
Autor: <input type="text" name="autor" size="31" maxlength="50" value="" />
</td>
</tr>
<tr>
<td colspan="2">
Comentario: <br />
<textarea name="coment" cols="31"></textarea>
<input name="seccion" type="hidden" value="'.$seccion.'" />
</td>
<tr>
<td>
Captcha:
</td>
<td>
<img src="captcha.php" /> <br />
<input type="text" name="captcha" size="10" maxlength="7" value="" />
</div>
<br />
</td>
</tr>
<td colspan="2" align="center">
<input name="Enviar" type="submit" />
</td>
</tr>
</form>
</table>';
if ($_GET['err'])
echo "<b>Ha introducido un captcha incorrecto</b>";
?>
se modifica la variable $seccion dandole el nombre de la página donde se incrustara el código sin el .php de esta forma separamos las diferentes páginas que tendrán un comentario y a la vez redirijimos en el update.php
update.php:
por errores con los headers no hago un include a conect.php...
<?php
session_start();
$coment = $_POST['coment'];
$seccion = $_POST['seccion'];
$autor = $_POST['autor'];
if ($_POST['captcha'] && $_POST['captcha'] == $_SESSION['rand'])
{
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'z_test';
$tabla = 'web_michelmin';
$con = mysql_connect($host, $user, $pass) or die(mysql_error());
mysql_select_db($db,$con) or die(mysql_error());
$update = mysql_query("INSERT INTO " . $tabla . " (id, autor, hora, comentario, seccion) VALUES (NULL, '" . $autor . "', CURRENT_TIMESTAMP, '" . $coment . "', '" . $seccion . "') ", $con) or die (mysql_error());
header("location: ". $seccion .".php");
} else
header("location: ".$seccion .".php?err=badcaptcha");
?>
captcha.php (esta parte es de shell root si no me equivoco)
<?php
# Em3trix
session_start();
$x = ImageCreateFrompng("captcha.PNG");
$numeros = rand(0000,9999);
$letras = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
$final = $letras{rand(1,50)};
$final .= $letras{rand(1,50)};
$final .= $letras{rand(1,50)};
$rand = $numeros.$final;
$rand2 = $rand[3].$rand[5].$rand[1].$rand[6].$rand[2].$rand[7].$rand[3];
$color = imagecolorallocate($x,"250","0","0");
$string = imagestring($x,5,"13","7","$rand2",$color);
$color1 = imagecolorallocate($x,"250","250","0");
$color2 = imagecolorallocate($x,"0","250","0");
$color3 = imagecolorallocate($x,"0","0","250");
$linea = imageline($x,"0","20","100","10",$color3);
$linea = imageline($x,"0","10","20","100",$color1);
$linea = imageline($x,"50","0","100","100",$color2);
ImageGIF($x);
$_SESSION['rand'] = $rand2;
?>
Estilos css = 0 soy malo con eso y al final cada uno tiene su estilo xD así que espero os sirva.
by nax
Hoy vamos a hablar un poco de las diferentes formas de escribir un If().
Resulta, quizá, un tanto extraño hablar de cómo escribir un condicional pero a lo largo de mi etapa como programador en PHP he visto tantas formas que creo es bueno tener una recopilación de, sino todas, la mayoría.
Como ya sabemos If es una condicional que sirve para guiar el flujo de un programa según ciertos parámetros. La estructura más común es:
<?php
if ($condicion) {
$acciones1;
}else if ($otra_condicion) {
$acciones2;
} else {
$acciones3;
} ?>
Si no se cumple la condición se nos envía al else if y si tampoco se cumple nos redirige al else y si se cumple se ejecutan las primeras.
Cuando contamos con un if para uan sola acción podemos hacerlo de la siguiente forma
<?php if ($condicion)
$accion1; $accion2; ?>
En este caso la acción uno se ejecutará solo en caso de que se cumpla la condición, sin embargo la condición dos se ejecuta siempre.
También podemos usar else if y else
<?php
if ($condicion)
$accion1;
else if ($otra)
$accion2;
else
$accion3; ?>
Esta quizá es la forma más difícil de aprender (así que ya veis lo complicado del tema..) y se utiliza mucho en SMF por lo que si suelen trabajar con su código es bueno conocerla.
<?php
$numero = 3; $variable = ($color == 3 ? 'Es 3' : 'No es 3'); ?>
Como veis es parecido a colocar un if, pero todo mientras damos el valor a la variable, para que quede más claro esta es la equivalencia con un if normal.
<?php
if ($color == 3)
$varoabñe = 'Es 3';
else
$variable = 'No es 3'; ?>
by nax
Hasta el momento PHP es un lenguaje interpretado
durante el runtime.
Eso quiere decir que al hacer una petición a una página web el servidor envía el código PHP al intérprete y este devuelve el resultado en HTML.
Este método de trabajo hace de PHP un lenguaje muy versátil, seguro y menos tedioso ya que no hay que estar compilando el código a cada cambio como sucede en C y C++.
Hay una tercera forma de compilación que son los llamados JIT (
Just-In-Time) como ejemplos podemos tener Java o .NET.
Eso (JIT) es lo que facebook ha desarrollado y especulado durante semanas, según dicen ha
mejorado el rendimiento de sus aplicaciones
un 80% por lo que puede ser un gran avance para la comunidad PHP y posiblemente veremos mejoras a lo largo de este año con respecto al compilador.
Si lo que buscabais es un nombre para el compilador de Facebook se rumoreaba que se llamaría HPHP o Hiper-PHP, pero en realidad aún no conozco el nombre exacto solo estos detalles.
Fuente
el-hacker.net