pChart: gráficas mediante PHP

pChart es una clase PHP que nos ayuda a crear gráficas. Los datos que se muestran se recuperan de sentencias SQL, ficheros CSV o simplemente introduciéndolos de forma manual.
pchart.png
Permite realizar gráficas de líneas, barras y circulares. Su uso es bastante sencillo. Incluso permite añadir ficheros de esquemas de colores.
pChart

Closures en PHP5.3

Closures son bloques de código que pueden ser pasados a una función y que pueden manejar variables que están definidas en el mismo ámbito. Algo que puede ser bastante útil cuando queremos repetir un código que solo se ejecutará en un lugar determinado y no queremos definir una función a nivel de clase para poder usarla.

Un vistazo a un ejemplo nos podrá ayudar de mejor manera:

function replace_in_array ($search, $replacement, $array) {
$map = function ($text) use ($search, $replacement) {
if (strpos ($text, $search) > 50) {
return str_replace ($search, $replacement, $text);
} else {
return $text;
}
};
return array_map ($map, $array);
}

Como se puede ver se trata de definir una función con una serie de parámetros, indicar qué variables del mismo ámbito puede usar y una vez definida, realizar la llamada a la función.

Closures en PHP5.3

Vía / Spinning de web

xmpphp: libería Jabber para PHP

xmpphp es una librería que permite realizar acciones sobre el protocolo XMPP, en el cual está basado Jabber o GTalk.

Un ejemplo sencillo para mandar mensajes sería el siguiente:

<?php
include("xmpp.php");
$conn = new XMPP('talk.google.com', 5222, 'username', 'password', 'xmpphp', 'gmail.com', $printlog=False, $loglevel=LOGGING_INFO);
$conn->connect();
$conn->processUntil('session_start');
$conn->message('someguy@someserver.net', 'This is a test message!');
$conn->disconnect();
?>

Una clase que nos puede ayudar mucho en algunas tareas como en el envio de alertas o avisos.

xmpphp

Gracias David por el aviso

__autoload en PHP5

En PHP5 existe una funcionalidad muy interesante a la hora de crear una aplicación o un framework. Se trata del método __autoload que nos permite ejecutar código cuando se intenta instanciar a una clase que aún no ha sido definida aún.

Esto nos permitiría hacer un include del fichero de la clase cuando se vaya a ejecutar, así nos ahorramos muchos includes al principio de cada script.

function __autoload($class_name) {
require_once $class_name . '.php';
}
// El código anterior deberá ir en la clase y cuando vayamos a instanciarlo, como a continuación, se ejecutará
$obj  = new MyClass1();
$obj2 = new MyClass2();

El código se puede mejorar para que coja el código de distintas partes o librerías.

__autoload

Propel: ORM para PHP

Propel es un ORM para PHP que facilita la labor de desarrollo de aplicaciones web, gracias a la capa que transforma el tratamiento de la BD mediante objetos, con la que se puede recuperar, insertar y modificar datos.

No es necesario preocuparse por las conexiones de la BD y escribir SQL. Tampoco es necesario escapar datos o realizar casting. Tan solo es necesario definir la base de datos en formato XML u obtener la definición desde una base de datos ya existente.

Propel

Crea redes sociales con Elgg

Elgg es una aplicación open source que permite crear redes sociales de forma sencilla y con bastantes características que completarán nuestra web.
elgg.png
Entre las características del administrador nos encontramos con administración de usuarios, objetos, ficheros y del sitio, gráficas con relaciones de los usuarios, múltiples sitios por instalación, internacionalización, sistema de etiquetas, ACL, vistas, eventos, plugins y API para widgets.
Además permite RSS, FOAF, XFN, OpenId, OpenSocial, OAuth, JSON, Ajax con jQuery, sistema de caché que permite memcached.
Lógicamente, el usuario final dispondrá de su perfil, panel, feeds de su actividad, preferencias, blog, aplicaicones OpenSocial, repositorio de ficheros, foros y mucho más.
Elgg necesita PHP 5.2+, Apache, GD, MySQL 5+ y mod_rewrite. A parte OpenSocial necesita Mcrypt y la librería PHP SOAP.
Elgg
Vía / WebAppers

Programación en paralelo con PHP

Realizar algunas tareas puede ser algo lento, por lo que a veces es necesario ejecutar procesos en paralelo para agilizar la ejecución de un script. PHP no permite programación concurrente, por lo cual hay que simularlo, y para ello es necesario la utilización de sockets.

El método es sencillo, se crean dos sockets y se comprueba que hayan acabado de ejecutarse:

// Ejecuta un proceso en un socket
function JobStartAsync($server, $url, $port=80,$conn_timeout=30, $rw_timeout=86400) {
$errno = '';
$errstr = '';
set_time_limit(0);
$fp = fsockopen($server, $port, $errno, $errstr, $conn_timeout);
if (!$fp) {
echo "$errstr ($errno)
\n"; return false; } $out = "GET $url HTTP/1.1\r\n"; $out .= "Host: $server\r\n"; $out .= "Connection: Close\r\n\r\n"; stream_set_blocking($fp, false); stream_set_timeout($fp, $rw_timeout); fwrite($fp, $out); return $fp; } // Devuelve falso si el socket está desconectado o un string (que puede ser vacio) si está conectado function JobPollAsync(&$fp) { if ($fp === false) return false; if (feof($fp)) { fclose($fp); $fp = false; return false; } return fread($fp, 10000); } // Ejecución inicial // Se ejecutan dos procesos cualquiera j1 y j2 $fp1 = JobStartAsync('localhost','/jobs/j1.php'); $fp2 = JobStartAsync('localhost','/jobs/j2.php'); while (true) { sleep(1); $r1 = JobPollAsync($fp1); $r2 = JobPollAsync($fp2); if ($r1 === false && $r2 === false) break; echo "r1 = $r1
"; echo "r2 = $r2
"; flush(); @ob_flush(); } echo "

Jobs Complete

";

El autor profundiza algo más y comenta también cómo se resolvería el método divide y vencerás.

Siempre hay que tener cuidado cuando se programa en paralelo ya que podemos tener problemas al acceder simultáneamente a un recurso compartido.

Easy Parallel Processing in PHP

Sitellite: CMS en PHP, MySQL y Apache

Sitellite es un CMS realizado en PHP que accede a MySQL en Apache que ha sido probado en IE6+, Firefox 2+ y Safari 3, y que ofrece las siguientes características:

  • Multilenguaje
  • Editor WYSIWYG
  • Auto-save por si error en el navegador
  • Seguridad contra spam o ataques contra la sesión
  • Workflow de mensajes
  • Opciones SEO
  • y mucho más

Sitellite

Oferta de trabajo para PHP

Ilion Animation Studios, fundado en 2002 para la producción de largometrajes de animación 3D, está ubicado en Madrid y cuenta con más de 200 profesionales – artistas, animadores, desarrolladores – de primer nivel internacional, procedentes de más de 15 países.
Buscamos un programador web orientado al desarrollo con PHP y AJAX, para el desarrollo de aplicaciones de backend con Javascript y Ext.js y JSON-RPC en PHP.
Oferta

ConstructrCMS: otro CMS en PHP

CMS hay muchos y cada día aparece uno nuevo, supongo que es porque cada cual hace las cosas a su manera y no hay un CMS que lo haga tal como uno quiere, por ello será por lo que los desarrolladores crean CMS nuevos. Lo cual nos lleva a que el mejor CMS que haya (Drupal, Joomla, …) no tiene que ser el que más nos guste.

En este caso se trata de ConstructrCMS, un CMS en PHP y MySQL que nos ofrece ente otras cosas:

  • URLs amigables
  • Cache
  • ACL
  • Login mediante hash vía link
  • TinyMCE integrado
  • Prototype y Scriptaculous
  • UTF-8
  • Uploads mediante FTP y sincronización automática después del FTP
  • Backend en distintos idiomas
  • Previsualizaciones
  • 404 personalizados

ConstructrCMS