Cuando tienes una aplicación web, los procesos cron son muy útiles para automatizar tareas de todo tipo: mantenimiento, background, … El problema que nos podemos encontrar es cuando el tiempo que tarda en ejecutarse un cron supera el tiempo de espera entre ejecuciones, con lo que nos encontramos con dos cron ejecutándose en el mismo momento, pudiendo repercutir negativamente en la propia tarea del cron.
Para evitar esta situación, el script al que hago referencia nos va a venir muy bien, porque añade bloqueos al cron para evitar que dos procesos se ejecuten. Una solución sencilla es crear un fichero, y si el fichero existe, pues no ejecutar el cron. El problema que tiene esto es que si el cron termina abruptamente, el fichero seguirá existiendo por no haberse borrado y el resto de procesos cron no se ejecutarán.
El autor en este script añade la posibilidad de saber si el cron sigue ejecutándose o se terminó incorrectamente, para lo cual en el fichero de bloqueo guarda el PID del proceso cron que lo crea y comprueba si el PID sigue existiendo. Este script sólo es útil en entornos linux.
Algo que nos pasa a los que aprendemos PHP por nuestra cuenta es coger fallos por malas costumbres, otras veces la gente tiene fallos por falta de conocimiento. Aquà os paso resumida una lista de los errores más comunes que se comenten a la hora de programar en PHP.
No escapar lo que nos llegar por parámetro: para evitar el cross-site scripting es necesario escapar las posibles entradas HTML que nos lleguen por parámetro. Si al introducir el usuario nos metieran:
<script>...$lt/script$gt;
serÃa necesario escapar las entidades HTML para evitar ataques. Para ello se usarÃa el siguiente código:
htmlspecialchars($_GET['username'], ENT_QUOTES)
No escapar las entradas de consultas SQL: para evitar SQL-injections es necesario escapar antes el contenido de las entradas que pasamos a nuestras consultas SQL. Por ejemplo, tendrÃamos que crearnos una función que escapara las comillas simples.
Uso incorrecto de las funciones para la cabecera HTTP (header(), session_start() y setcookie()): muchas veces cuando desarrollanos nos encontramos con un mensaje de error que dice que ya se ha mandado la cabecera y que no se puede añadir más información. Esto es debido a que las funciones de cabecera (header(), session_start(), setcookie()) se tienen que usar al principio del script, antes de mandar nada a la salida.
No controlar lo que añades mediante require o include: se trata de no comenter el error de incluir un fichero cuya ruta se pasa por parámetro, ya que aunque nosotros seamos quienes pongan ese valor en el parámetro, puede llegar alguien y cambiar la ruta y pasar otro fichero que no sea de fiar.
Errores de sintaxis: bueno, aquà el autor del artÃculo, se ha quedado un tanto agusto. Todo el mundo comete errores de sintaxis cuando programa, ya sea en PHP, C, .NET o cualquier otro lenguaje de programación. Yo si que comentaria un error que suelo cometer, que es el escribir mal una variable y que el script no falle (como ocurrirÃa en Java), pero que se obtengan datos incorrectos.
No usar la orientación a objetos: desde la versión 4 los objetos se admiten en PHP, en PHP5 se mejoró su utilización. Debemos aprovecharnos de esas posibilidades.
No usar frameworks: no reinventemos la rueda, si ya hay un framework que nos gestiona la base de datos, los errores y otras cosas, no pierdas el tiempo en implementarlo tu mismo.
Desconocer funcionalidades: PHP dispone de muchas funcionalidades en su core o en su librerÃas, cuantas más funcionalidades conozcas, menos tiempo perderas en el desarrollo.
Usar versiones antiguas de PHP: tiene dos inconvenientes, que desaprovechas nuevas funcionalidades y corres el peligro de no tener todos los bugs parcheados.
Doble escapado de comillas: es posible encontrar en código PHP algo asÃ: \’ o \”. Esto suele ocurrir cuando se desarrolla con magic_quotes off y se instala en un servidor con magic_quotes on.
Steponas Kazakevicius has written up a new tutorial about file uploading and, more specifically, making an upload tool that can handle interruptions. Have you ever been to a website that offers downloads of stuff? And while you are waiting for the download, there are lots of ads around? Sure you have. I have too. The last day I was downloading stuf …
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.
Últimamente estoy trabajando bastante con Gutenberg, tiene sus cosas buenas y malas. Sea como sea, es el futuro de WordPress, así que toca aprender.
Lo más interesante de todo es poder usar lo que sabía de webpack, React, HMR, … Y para practicar he hecho un plugin que permite añadir snippets de código en los posts usando los bloques de Gutenberg
Para ello uso la librería highlight.js que permite destacar código de forma sencilla. Aquí un ejemplo
// Import CSS.import'./scss/style.scss';
import'./scss/editor.scss';
import icon from'./icon';
import edit from'./edit';
import save from'./save';
import attributes from'./attributes';
import { __ } from'@wordpress/i18n'; // Import __() from wp.i18nexportconst name = 'sentidoweb/snippet';
exportconst settings = {
// Block name. Block names must be string that contains a namespace prefix. Example: my-plugin/my-custom-block.
title: __( 'Snippets editor', 'sw-snippet' ), // Block title.
icon: icon,
category: 'common', // Block category — Group blocks together based on common traits E.g. common, formatting, layout widgets, embed.
keywords: [
__( 'code', 'sw-snippet' ),
__( 'format', 'sw-snippet' ),
__( 'snippet', 'sw-snippet' ),
],
attributes,
edit,
save,
};