joomla - ejecutar - editar crontab
Joomla(3.X) ¿Cómo programar un cron? (2)
Pregunta: ¿Cómo programar un cron en Joomla?
Subpregunta: no entiendo ¿hay archivos php y código para escribir? o debería configurar un Cron de Unix (no estoy seguro de poder hacerlo con el proveedor de host)?
Detalles: hice un componente, quiero que este componente se ejecute una vez al día.
Queja / troll / puede omitir: ¡la documentación de Joomla es terrible! No puedo creer que no haya nada que explique cómo hacerlo, sino información desactualizada de 2007 o un proyecto obsoleto (programador de Jcron). Ahora instalé el lleno de errores y plugins antipáticos JPrc Cronjobs sin documentación (¡Sí!) Así que con suerte encontré dos páginas para configurarlo: https://www.ostraining.com/blog/joomla/jprc-cronjobs/ http: / /dashhelp.com/home/joomla-blog/114-jprc-cronjobs-cron-for-joomla-websites Ahora el complemento dice que está bien, pero de hecho no ejecuta nada y no hay ningún registro. Los botones de registro están congelados. Cuando tuve que hacer lo mismo con wordpress, tardé 30 minutos ... en Joomla después de la 1h30. No he descubierto cómo hacerlo. Perdón por quejarme, ¡pero estoy tan impresionado con este proyecto de Joomla! Me gusta la arquitectura MVC, pero esto es lo único bueno en Joomla. ¡El documento y el recurso son tan MALOS! Bueno, ahora me siento mejor, incluso si nadie nunca lo leyó.
¡Aleluya!
Aquí está la respuesta.
es una gran ayuda para mí, me he beneficiado enormemente de los miembros de los miembros, hoy estoy muy feliz de poder participar en la comunidad con esta respuesta y espero que esto ayude a los desarrolladores como yo que no tienen otra opción de trabajar con Joomla.
Así que aquí está cómo construir un cron con Joomla.
Como dice Elin, no hay ningún cron incorporado, entonces tenemos que usar el cron de unix. El cron llamará a un script php. Para que el script funcione, debes cargar el framework de Joomla.
Puedes obtener exemple en / cli
Aquí está mi Cron
<?php
// Initialize Joomla framework
const _JEXEC = 1;
// Load system defines
if (file_exists(dirname(__DIR__) . ''/defines.php''))
{
require_once dirname(__DIR__) . ''/defines.php'';
}
if (!defined(''_JDEFINES''))
{
define(''JPATH_BASE'', dirname(__DIR__));
require_once JPATH_BASE . ''/includes/defines.php'';
}
// Get the framework.
require_once JPATH_LIBRARIES . ''/import.legacy.php'';
// Bootstrap the CMS libraries.
require_once JPATH_LIBRARIES . ''/cms.php'';
// Load the configuration
require_once JPATH_CONFIGURATION . ''/configuration.php'';
require_once JPATH_BASE . ''/includes/framework.php'';
/**
* Cron job
*
*/
class myCron extends JApplicationCli
{
/**
* Entry point for the script
*
* @return void
*
* @since 2.5
*/
public function doExecute()
{
// YOUR CODE HERE
require_once JPATH_BASE.''/administrator/components/com_mycom/helpers/XMLImporter.php'';
echo "CRON TASK START ";
echo "/n"; // Use /n is you are executing the cron from the terminal.
$instance = PropertyXMLImporter::instance();
$instance->execute_import();
echo "CRON TASK END ";
echo "/n";
}
}
JApplicationCli::getInstance(''myCron'')->execute();
Ahora necesita programar su cron.
Abra la terminal y escriba
> crontab -e
Si esto se abre como editor de texto vi, puede presionar ZZ o: q! para salir, escribe esto para obtener un mejor editor de texto (en mac)
> export EDITOR=nano
Entonces
> crontab -e
y agrega una línea como esta:
*/1 * * * * php /Applications/MAMP/htdocs/YOURPROJECT/PATH-TO-THE-CRON/cronTask.php
Puede verificar que esto esté bien escribiendo
> crontab -l
* / 1 * * * * es la sintaxis del cronograma de Cron, marque aquí para leer al respecto: https://en.wikipedia.org/wiki/Cron
En nuestro caso, utilicé * / 1 para disparar cada minitues al propósito de la prueba. Por supuesto, quiere cambiarlo cuando está funcionando. En mi caso, quiero que se ejecute todos los días a las 3 a.m. Así que lo cambié por 0 3 * * *
IMPORTANTE 1: Para iniciar un trabajo cron cada minuto con fines de prueba, ¡no olvide el / 1! (* / 1 * * * *) no es lo mismo que (1 * * * *). He waiste un poco de tiempo en este caso;)
IMPORTANTE 2: Si obtiene este error mientras excede su cron en localhost "No se pudo conectar a MySQL". Cambie su configuration.php con
public $ host = ''127.0.0.1'';
en lugar de public $ host = ''localhost''; Sí, este es un bi ** h! Perdí algunas horas en eso ...
IMPORTANTE 3: El código que escribí arriba, es bueno si pones tu cron in / cli. No estoy seguro de que este sea el mejor lugar, así que recuerda adaptar la ruta a tu ubicación cron.
Espero que esto ayude a alguien !
También puede cron configurar en cpanel y dar la ruta del archivo cron en cpanel dar ruta de este tipo:
/public_html/your_projects/cron.php