Es muy habitual para los usuarios de Linux querer ordenar el contenido de los directorios por tamaño de los ficheros o subdirectorios que contiene. En este caso lo tenemos muy sencillo con la siguiente instrucción:
# du -hs * | sort -h
Esto nos ordenará ascendentemente. En caso de querer que sea descendente el orden, podemos añadir -r y quedaría así:
# du -hs * | sort -h -r
SoftOnTheRocks
Programación PHP, MySQL y Javascript. Noticias y Tecnología
miércoles, 16 de agosto de 2017
jueves, 27 de agosto de 2015
Obtener uso de disco o partición mediante PHP
Si necesitamos saber el tamaño total y el uso del disco en el que tenemos alojada nuestra web, por ejemplo para avisar de que queda poco espacio libre, lo podemos hacer fácilmente mediante PHP. Para ello contamos con dos funciones muy útiles:
- float disk_free_space ( string $directory ): devuelve el número de bytes disponibles en el sistema de archivos o partición de disco que corresponde con el directorio especificado.
- float disk_total_space ( string $directory ): devuelve el número total de bytes del sistema de archivos o partición de disco que corresponde con el directorio especificado.
A modo de ejemplo hemos creado una función que utiliza las funciones anteriomente mencionadas y que nos devolverá una cadena con el total y el uso de discos en GB y el porcentaje de uso y libre si hemos superado un porcentaje límite de uso de disco o partición, que establecemos por defecto en el 90%. Si no superamos dicho límite, devolvemos false:
function getDiskUsage($dir, $limit=90){ $freespace = disk_free_space($dir); $totalspace = disk_total_space($dir); $freespace_mb = $freespace/1024/1024; $totalspace_mb = $totalspace/1024/1024; $freespace_percent = ($freespace/$totalspace)*100; $used_percent = (1-($freespace/$totalspace))*100; if ($used_percent > $limit){ $text = sprintf(_('Espacio total').": %.2fGB", $totalspace_mb/1024).' - '; $text.= sprintf(_('libre').": %.2fGB", $freespace_mb/1024).' - '; $text.= sprintf(_('%% usado').": %.2f%%", $used_percent).' - '; $text.= sprintf(_('%% libre').": %.2f%%", $freespace_percent); return $text; } return false; }
viernes, 23 de enero de 2015
Obtener listado de archivos de un directorio por fecha de modificación con PHP
Si necesitáis recorrer un directorio con PHP y obtener los archivos modificados en una fecha en concreto, lo podéis conseguir fácilmente con esta función que creé hace pocos días.
Como vemos, únicamente le tenemos que pasar el directorio y el día. Si no pasamos el día la función cogerá el día actual para realizar la búsqueda.
function getFilesFromDate($dir, $day=null){ if ($day==null) $day = time(); // Leo todos los ficheros de la carpeta $dir = opendir($dir); while ($file = readdir($dir)){ if ($file!='.' && $file!='..' && is_file($dir.'/'.$file) && date("Ymd", $day)==date("Ymd", filemtime($dir.'/'.$file))){ $arrfiles[] = $file; } } closedir($dir); return $arrfiles; }
Como vemos, únicamente le tenemos que pasar el directorio y el día. Si no pasamos el día la función cogerá el día actual para realizar la búsqueda.
martes, 2 de diciembre de 2014
Calcular la edad con PHP
He visto en algunos posts que para calcular la edad en años de una persona hay problemas si la fecha de nacimiento es menor que el año 1970. Eso se debe a que pasan la fecha a tiempo UNIX y después hacen una resta y la vuelven a convertir a años.
Lo más simple que he visto es esta función que os dejo aquí, que simplemente coge primero la parte de meses y días de la fecha actual y la de nacimiento y mira si ya hemos pasado o todavía no. Después resta la parte de años de ambas fechas y finalmente ajusta.
Se puede complicar más haciendo que el formato de entrada se pueda configurar pero lo hemos puesto en formato inglés YYYY-MM-DD. Los resultados son los siguientes:
Espero que os sirva.
Lo más simple que he visto es esta función que os dejo aquí, que simplemente coge primero la parte de meses y días de la fecha actual y la de nacimiento y mira si ya hemos pasado o todavía no. Después resta la parte de años de ambas fechas y finalmente ajusta.
function getAge($birthdate){ $adjust = (date("md") >= date("md", strtotime($birthdate))) ? 0 : -1; // Si aún no hemos llegado al día y mes en este año restamos 1 $years = date("Y") - date("Y", strtotime($birthdate)); // Calculamos el número de años return $years + $adjust; // Sumamos la diferencia de años más el ajuste }
Se puede complicar más haciendo que el formato de entrada se pueda configurar pero lo hemos puesto en formato inglés YYYY-MM-DD. Los resultados son los siguientes:
// Hoy es 2 de diciembre de 2014 echo getAge("1919-02-21"); // devuelve 95 echo getAge("1952-12-07"); // devuelve 61
Espero que os sirva.
jueves, 27 de noviembre de 2014
Acceder a las propiedades de un IFRAME mediante Javascript
Si necesitamos acceder a las propiedades de un iframe que esté incorporado en nuestra página lo podemos hacer de una forma muy sencilla con la siguiente función:
A esta función le pasamos el id del iframe y obtendremos un objeto que podremos manejar y cambiar por ejemplo el color de fondo. Para ponerle el fondo de color gris lo haríamos así:
La propiedad contentDocument es soportada por los principales navegadores excepto Internet Explorer, que solamente la soporta a partir de la versión 8 si está especificado !DOCTYPE. Para las versiones anteriores de Internet Explorer hay que usar contentWindow.
function getIframe(id){ var myframe = document.getElementById(id); var content = (myframe.contentWindow || myframe.contentDocument); return content.document; }
A esta función le pasamos el id del iframe y obtendremos un objeto que podremos manejar y cambiar por ejemplo el color de fondo. Para ponerle el fondo de color gris lo haríamos así:
var myframe = getIframe('myframe'); myframe.body.backgroundColor = '#CCC'; }
La propiedad contentDocument es soportada por los principales navegadores excepto Internet Explorer, que solamente la soporta a partir de la versión 8 si está especificado !DOCTYPE. Para las versiones anteriores de Internet Explorer hay que usar contentWindow.
miércoles, 26 de noviembre de 2014
Acortar urls con goo.gl desde PHP usando la API de Google
Acortar una url es algo bastante común hoy en día, sobretodo en las redes sociales como Twitter donde el número de caracteres es limitado.
Si lo queremos de hacer desde nuestra sitio web de PHP tenemos una forma muy sencilla con la API de Google.
Los pasos a dar serían los siguientes:
1. Lo primero que necesitaremos será darnos de alta una cuenta de Google Developer, que lo puedes hacer fácilmente si tienes una cuenta de Google.
2. Deberemos ir la la consola del desarrollador y dar de alta un nuevo proyecto. Le pondremos el nombre que deseemos y una vez creado iremos en el menú de la izquierda al ítem APIs & Auth (APIs y autenticación en español). Seleccionando APIs en el submenú veremos toda la lista de servicios que nos ofrece Google. Buscaremos URL Shortener API y lo activaremos desde la parte superior de la página. Hecho esto elegiremos en el submenú Credentials (Credenciales en español) y haremos clic en Crear clave nueva. Nos aparecerá una ventana emergente y seleccionaremos Clave de servidor. Ahí nos pedirá que pongamos una IP si queremos limitar desde donde se puede llamar al servicio. Con todo esto realizado ya nos dará la clave de la api que necesitaremos posteriormente para acortar la url.
3. El último paso será coger el código que os dejo a continuación y cambiar únicamente la clave de la api por la vuestra y la url por la que necesitéis.
Código PHP
Lo primero que veremos será la clase que implementa las funciones de acortar y expandir:
Ahora solamente nos queda hacer la llamada a la clase anterior y acortar o expandir una url:
Espero que os sirva en vuestros proyectos.
Si lo queremos de hacer desde nuestra sitio web de PHP tenemos una forma muy sencilla con la API de Google.
Los pasos a dar serían los siguientes:
1. Lo primero que necesitaremos será darnos de alta una cuenta de Google Developer, que lo puedes hacer fácilmente si tienes una cuenta de Google.
2. Deberemos ir la la consola del desarrollador y dar de alta un nuevo proyecto. Le pondremos el nombre que deseemos y una vez creado iremos en el menú de la izquierda al ítem APIs & Auth (APIs y autenticación en español). Seleccionando APIs en el submenú veremos toda la lista de servicios que nos ofrece Google. Buscaremos URL Shortener API y lo activaremos desde la parte superior de la página. Hecho esto elegiremos en el submenú Credentials (Credenciales en español) y haremos clic en Crear clave nueva. Nos aparecerá una ventana emergente y seleccionaremos Clave de servidor. Ahí nos pedirá que pongamos una IP si queremos limitar desde donde se puede llamar al servicio. Con todo esto realizado ya nos dará la clave de la api que necesitaremos posteriormente para acortar la url.
3. El último paso será coger el código que os dejo a continuación y cambiar únicamente la clave de la api por la vuestra y la url por la que necesitéis.
Código PHP
Lo primero que veremos será la clase que implementa las funciones de acortar y expandir:
class GoogleShortUrl{ // Constructor function __construct($key, $apiURL = 'https://www.googleapis.com/urlshortener/v1/url'){ $this->apiURL = $apiURL.'?key='.$key; } // Acortar la URL function shorten($url) { $response = $this->send($url); return isset($response['id']) ? $response['id'] : false; } // Expandir la URL function expand($url) { $response = $this->send($url, false); return isset($response['longUrl']) ? $response['longUrl'] : false; } // Enviar información a Google function send($url, $shorten = true){ // Inicializamos curl y definimos el objeto $curlObj = curl_init(); if ($shorten){ curl_setopt($curlObj, CURLOPT_URL, $this->apiURL); curl_setopt($curlObj, CURLOPT_POST, 1); curl_setopt($curlObj, CURLOPT_POSTFIELDS, json_encode(array("longUrl"=>$url))); curl_setopt($curlObj, CURLOPT_HTTPHEADER, array("Content-Type: application/json")); } else { curl_setopt($curlObj, CURLOPT_URL, $this->apiURL.'&shortUrl='.$url); } curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($curlObj, CURLOPT_HEADER, 0); // Ejecutamos el post $response = curl_exec($curlObj); // Cerramos la conexión curl_close($curlObj); // Devolvemos la respuesta return json_decode($response, true); } }
Ahora solamente nos queda hacer la llamada a la clase anterior y acortar o expandir una url:
// Creamos una instancia de la clase $key = 'miclave'; $shorter = new GoogleShortUrl($key); // Acortamos la URL $shortname = $shorter->shorten("http://softontherocks.blogspot.com"); echo $shortname; // devuelve http://goo.gl/VF1HJ // Expandimos la URL $longname = $shorter->expand($shortname); echo $longname; // devuelve http://softontherocks.blogspot.com
Espero que os sirva en vuestros proyectos.
Suscribirse a:
Entradas (Atom)