Librería Tokyo Tyrant para PHP
Cada día suenan más las bases de datos clave-valor, y entre ellas Tokyo Tyrant, por lo que no nos vendrá mal hacer uso de la librería PECL para ella, lástima que sea PECL.
PHP Tokyo Tyrant
Cada día suenan más las bases de datos clave-valor, y entre ellas Tokyo Tyrant, por lo que no nos vendrá mal hacer uso de la librería PECL para ella, lástima que sea PECL.
PHP Tokyo Tyrant
Para obtener datos de un HTML, en vez de hacerlo con expresiones regulares, hacerlo mediante DOMDocument:
$oldSetting = libxml_use_internal_errors( true );
libxml_clear_errors();
$html = new DOMDocument();
$html->loadHtmlFile( $url );
$xpath = new DOMXPath( $html );
$links = $xpath->query( '//a' );
foreach ( $links as $link ) {
echo $link->getAttribute( 'href' ), "\n";
}
libxml_clear_errors();
libxml_use_internal_errors( $oldSetting );
Se utiliza libxml_use_internal_errors para evitar HTML mal formados
Me pregunto si para obtener tan solo un dato del HTML (title por ejemplo) es mejor el DOM o las expresiones regulares.
Completo tutorial en el que se nos enseña cómo trabajar con la API OAuth de Delicious. Primero nos indicará como obtener una API Key, luego el Request Token, obtener permiso de aceso a los datos de los usuarios, obtener el Access Token, realizar peticiones a Delicious y por último actualizar el Access Token para futuros accesos sin necesidad de autorización.
Interesante script que te ayudará si no quieres que la gente acceda directamente a tus ficheros para bajárselos. Para ello lo que hará será recoger un parámetro con el fichero que se quiere bajar, añadirle el path donde se encuentra y mediante la cabecera de la respuesta (header) devolver el fichero.
<?
$dir="/path/directorio/";
if (isset($_REQUEST["fichero"])) {
$fichero=$dir.$_REQUEST["fichero"];
header("Content-type: application/force-download");
header("Content-Transfer-Encoding: Binary");
header("Content-length: ".filesize($fichero));
header("Content-disposition: attachment; filename=\"".basename($fichero)."\"");
readfile("$fichero");
} else {
echo "Fichero seleccionado";
}
?>
Si avanzáis en el artÃculo, veréis un caso más práctico con la base de datos.
VÃa / Good PHP Tutorials
Leyendo una entrada de Korsarios.net sobre la lista de países en SQL, recordé que no hace mucho yo también me tuve que crear una lista parecida, pero esta vez de idiomas. Por eso hemos pensado que no estaría mal ofrecer una serie de recursos sobre idiomas y países, que podamos usar en nuestras páginas web.
Suele ser muy útil cuando queremos mostrar un desplegable con los todos los países que existen. Existe el estándar ISO 3166 para definir los países y sus subdivisiones, codificados mediante dos letras, tres letras o de forma numérica.
También puede ser necesario disponer la lista de países en la base de datos, para eso nada mejor que lo que nos ofrece Korsarios.net, las sentencias sql para la lista de países en español y en inglés.
En otras ocasiones puede que necesitemos ir a distintas páginas según el idioma o país desde dónde se visite la página. El idioma se puede detectar mediante PHP o Javascript. Aunque el idioma no siempre es siempre lo más característico, porque puede tratarse de algo específico del país y no del idioma (por ejemplo, una tienda). Para ello lo mejor es detectar el país según la IP, habiendo dos formas, mediante acceso a BD o sin acceso a BD.
En el caso de que querer la lista de idiomas, tendremos que tener en cuenta el ISO 639, codificado con dos letras y tres letras. Como no, siempre es bueno también tener todos los datos de los idiomas en la BD, en este caso somos nosotros quienes os ponemos en disposición el sql necesario:
Idiomas sql
PHPLiveX es una librerÃa PHP que facilita la llamada desde Ajax a funciones PHP. Genera código Javascript que implementa funciones con los mismos nombres y argumentos dados en una lista de funciones PHP. Cuando el código Javascript generado es llamado, empieza la petición Ajax que invoca a su respectiva función PHP en el servidor.
Actualmente está probado para los navegadores Mozilla, Firefox, Internet Explorer y Opera. Su uso parece muy sencillo En el código PHP debes indicar la función:
<?php
function miFuncion($texto){
return $texto;
}
$plx = new PHPLiveX("miFuncion");
// También se puede hacer asÃ
// $plx = new PHPLiveX();
// $plx->Export("miFuncion");
?>
Y luego en el HTML debes escribir lo siguiente:
<script type="text/javascript">
<? $plx->Run(); ?>
</script>
VÃa / VT’s Tech Blog
Actualmente las aplicaciones web (por ejemplo WordPress) permiten la ampliación de sus funcionalidades con el uso de plugins o eventos, dependiendo lo que se quiera hacer.
En el artÃculo que referenciamos, el autor crea una estructura para poder añadir plugins o eventos (explicándolo con eventos en este caso). El funcionamiento es el siguiente, se tiene un array de eventos, organizado por nombre del evento: el Ãndice del array es el nombre del evento, cada posición del array almacena otro array con cada acción que se debe ejecutar.
Existen tres métodos: añadir evento, quitarlo y ejecutar las acciones del evento. Cuando se quiera añadir una acción a un evento, se debe indicar el nombre del evento y pasar la función que se quiere ejecutar. Cuando se ejecute un evento, se ejecutarán cada una de las acciones almacenadas en el array para ese evento.
A basic plugin and event architecture…
VÃa / Good PHP Tutorials
Comments are closed.
Hola, he dado un vistazo a la documentación de Tokyo Tyrant y no acabo de entender del todo para que sirve una base de datos clave-valor..
Me lo podÃas aclarar?
Saludos.
Hola
Normalmente las BD son relacionales, tal tabla se relaciona con tal otra, … Pero esto no siempre es necesario ya que muchas veces sólo se realizan accesos mediante el ID de la tabla. ¿Para qué usar una BD relacional si vas a tirar únicamente de ID?
Una de las caracterÃsticas más importantes de las BD clave-valor es su rapidez, son mucho más rápidas que las BD relacionales.
ImagÃnate que tienes una BD que controla el spam de una web y necesitas saber si una IP está aceptada o rechazada. En este caso no necesitarÃas una BD relacional, solo saber si span[‘ip’] es true o false.
Espero haberte despejado las dudas.
Saludos