PHP normalmente guarda la sesión en disco, pero como no es algo seguro, ni el directorio tiene que ser el mismo, se debe indicar mediante configuración el que se guarde en disco y la ruta. Para ello hay tres formas de hacerlo:
phpRemoteShell es una aplicación que permite ejecutar comandos de shell y código PHP en un host remoto sobre HTTP.
Además permite encriptarse y desencriptarse en la petición, PRS se puede alojar a sà mismo en en otro script PHP del servidor para poder restablecerse durante el tiempo de ejecución. Ademas permite modificar el crontab entre otras cosas. phpRemoteShell
VÃa / International PHP Magazine
Últimamente estamos mostrando muchos frameworks PHP, cuanta más variedad mejor, aunque claro, luego hay más problemas tenemos para decidirnos. Akelos es un framework basado en el diseño Model-View-Controller, desde Ajax en la vista hasta las peticiones y respuestas en el controlador.
Akelos está pensado para aquellos que les gusta desarrollar aplicaciones, para programadores de Ruby On Rails que necesitan programar algo en PHP, para necesidades de coste bajo y para crear aplicaciones multi-idioma.
Entre las ventajas que ofrece nos encontramos la rapidez con la que se generan aplicaciones algo complejas, compatible con PHP4 y PHP5, no son necesarias configuraciones complejas y soporte para MySQL, PostgreSQL y SQLite. Akelos
VÃa / PHPDeveloper.org
Para mí, uno de los mayores fracasos de Twitter es su API, una limitación de su uso increíble para algo que le podría dar mucho juego a la aplicación. Ahora mismo no sé en cuánto está el límite, pero la posibilidad de realizar una aplicación basada en Twitter es una pesadilla.
Para aquellos que no quieran sufrir lo que hemos sufrido con TwitterPoster (los espacios en blanco es porque la gente actualiza su imagen y no podemos recuperar la de todos los usuarios por el límite en el API de Twitter), les recomiendo usar Twitter mediante CURL.
Os paso un script sencillito que he realizado:
<?php
// Primer hacemos login
$url ="https://twitter.com/sessions";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
// Por si tienen limitación por navegador
curl_setopt($ch, curlOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)");
// Poned una ruta para las cookies
curl_setopt ($ch, CURLOPT_COOKIEJAR, '/temp/');
curl_setopt ($ch, CURLOPT_COOKIEFILE, '/temp/');
curl_setopt ($ch, CURLOPT_POSTFIELDS, "username_or_email=[usuario]&password=[contraseña]");
// Para que funcione el https
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, curlOPT_SSL_VERIFYHOST, 2);
curl_exec ($ch);
// Cargamos el home, porque Twitter añade dos campos ocultos para poder publicar por web
$url ="http://twitter.com/home";
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec ($ch);
// Recuperamos los campos ocultos
preg_match('//', $result, $match);
$authenticity_token = $match[1];
preg_match('//', $result, $match);
$siv = $match[1];
// Insertamos el texto
$res = $url ="http://twitter.com/status/update";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'siv='.$siv.'&authenticity_token='.$auth.'&status=[texto]');
curl_exec ($ch);
curl_close ($ch);
unset($ch);
?>
¿Qué fallo tiene este script? pues que si cambian el HTML (campos de formulario, …) o las URLs deja de funcionar, pero al menos no tenemos limitaciones. Eso sí, es más costoso para sus servidores y para los nuestros, porque en vez de hacer una llamada, hacemos 3, y en nuestro caso, a parte parseamos una página para obtener dos campos ocultos.
Hay muchos consejos para agilizar tus scripts de PHP, pero en este caso se concentran en el uso de funciones y sus funciones alias. Por lógica la llamada a una función será más rápida que la llamada a una función alias, salvo en un caso que la verdad me sorprende.
Los porcentajes que se muestran son reales, pero quizás no sean perceptibles, ya que el uso de estas funciones puede ser mÃnimo en un desarrollo, pero bueno, si algo de tiempo obtenemos, mejor que mejor.
Las funciones son las siguientes:
sizeof y count: count es un 12% más rápida.
is_int y is_integer: is_int es un 9% más rápida.
chop y rtrim: rtrim es un 7% más rápida.
doubleval y floatval: floatval es un 4% más rápida.
fwrite y fputs: fputs es un 23% más rápida, esta es la comparativa que me sorprende, porque fputs es alias de fwrite. Que alguien me lo explique, ¿una diferencia del 23%? o no son alias o el ejemplo está mal medido.
implode y join: implode es un 5% más rápida.
ini_alter y ini_set: ini_set es un 19% más rápida.
Desde Devshed nos ofrecen un completo tutorial para realizar una aplicación que convierte una dirección IP en su correspondiente país. Para ello, lo más importante es la base de datos de direcciones IP: http://software77.net/cgi-bin/ip-country/geo-ip.pl, sin la cual no se podría hacer la aplicación.
Después nos indica cómo pasar la BD de las IPs a una tabla de MySQL mediante un script, y ya con esta tabla podremos trabajar con la relación IP-país. Building an IP-to-Country Mapping Application with PHP