Cron-Einträge
- D@ve
- Ehemaliges Teammitglied
- Beiträge: 3842
- Registriert: 28.08.2002 19:33
- Wohnort: Bretzfeld
- Kontaktdaten:
Cron-Einträge
Hat schon jemand Erfahrungen mit der Cron-Funktionalität? Hab da im englischen Forum einiges dazu gelesen, aber irgendwie fand ich das nicht sehr erhellend. Gibt es da ein Tutorial zu, wie man das in seine Extensions integriert?
Gruß, Dave
Gruß, Dave
There are only 10 types of people in the world: Those who understand binary, and those who don't
- D@ve
- Ehemaliges Teammitglied
- Beiträge: 3842
- Registriert: 28.08.2002 19:33
- Wohnort: Bretzfeld
- Kontaktdaten:
Re: Cron-Einträge
Also anscheinend kann man über die services.yml irgendwie cron-Tasks hinzufügen:
Quelle: https://raw.githubusercontent.com/Forum ... rvices.yml
Aber so richtig werde ich da noch nicht schlau raus, wie man das jetzt in der Extension auswertet...
Gruß, Dave
PS : Wieso wurde das in "Administration und Benutzung" verschoben?
Code: Alles auswählen
services:
cron.task.core.DeleteInactiveUsers:
class: forumhulp\DeleteInactiveUsers\cron\task\core\delete_inactive_users
arguments:
- @user
- @config
- @config_text
- @dbal.conn
- @log
- %core.root_path%
- %core.php_ext%
calls:
- [set_name, [cron.task.core.delete_inactive_users]]
tags:
- { name: cron.task }
Aber so richtig werde ich da noch nicht schlau raus, wie man das jetzt in der Extension auswertet...
Gruß, Dave
PS : Wieso wurde das in "Administration und Benutzung" verschoben?
There are only 10 types of people in the world: Those who understand binary, and those who don't
Re: Cron-Einträge
Hi,
schau Dir mal meinen Cron Job für eine eMail Benachrichtigung an:
https://github.com/DrDeath/phpbb-ext-f1 ... rvices.yml
https://github.com/DrDeath/phpbb-ext-f1 ... minder.php
Der Cron Job prüft einmal täglich ob ein Rennen in den nächsten 3 Tagen stattfindet, falls ja, wird eine eMail versendet und das Rennen "markiert", damit es nicht am nächsten Tag erneut erkannt wird.
Der Abschnitt
In der services.yml wird der Cron Job dem System bekannt gemacht und in die Liste aller verfügbaren Cron Jobs eingereiht.
schau Dir mal meinen Cron Job für eine eMail Benachrichtigung an:
https://github.com/DrDeath/phpbb-ext-f1 ... rvices.yml
https://github.com/DrDeath/phpbb-ext-f1 ... minder.php
Der Cron Job prüft einmal täglich ob ein Rennen in den nächsten 3 Tagen stattfindet, falls ja, wird eine eMail versendet und das Rennen "markiert", damit es nicht am nächsten Tag erneut erkannt wird.
Der Abschnitt
public function run()
ist der eigentliche Cron Job, public function is_runnable()
entscheidet ob der Cron Job überhaupt aktiviert ist oder nicht, public function should_run()
startet den Cron Job, wenn er aktiviert ist und die entsprechende Zeit/Option erreicht wurde.In der services.yml wird der Cron Job dem System bekannt gemacht und in die Liste aller verfügbaren Cron Jobs eingereiht.
- D@ve
- Ehemaliges Teammitglied
- Beiträge: 3842
- Registriert: 28.08.2002 19:33
- Wohnort: Bretzfeld
- Kontaktdaten:
Re: Cron-Einträge
Vielen Dank, der Groschen ist jetzt gefallen... Schade dass es keine vernünftigen Tutorials/Howtos gibt...
Die Verzeichnisnamen cron/task ist das Konvention, oder kann man da auch eigene Verzeichnisse nehmen?
Kriege gerade nur Fehlermeldungen, dass er meine Klasse nicht findet:
und
Die Verzeichnisnamen cron/task ist das Konvention, oder kann man da auch eigene Verzeichnisse nehmen?
Kriege gerade nur Fehlermeldungen, dass er meine Klasse nicht findet:
Code: Alles auswählen
dave.userdelete.crons.remove_user_cron:
class: dave\userdelete\crons\remove_user_cron
arguments:
- @config
- @dbal.conn
- @log
- @user
calls:
- [set_name, [ dave.userdelete.crons.remove_user_cron]]
tags:
- { name: cron.task }
und
Code: Alles auswählen
<?php
/**
*
* @package phpBB Extension - User Delete
* @copyright (c) 2014 Dave Remmel www.2phpbb.de
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
*
*/
namespace dave\user_delete\crons;
use Symfony\Component\DependencyInjection\Container;
class remove_user_cron extends \phpbb\cron\task\base
{
protected $db;
protected $user;
protected $log;
protected $config;
///public function __construct($root_path, $php_ext, Container $phpbb_container, \phpbb\extension\manager $phpbb_extension_manager, \phpbb\path_helper $phpbb_path_helper, \phpbb\db\driver\driver_interface $db, \phpbb\config\config $config, \phpbb\log\log_interface $log, \phpbb\user $user)
public function __construct(\phpbb\config\config $config, \phpbb\db\driver\driver_interface $db, \phpbb\log\log_interface $log, \phpbb\user $user)
{
$this->config = $config;
$this->db = $db;
$this->log = $log;
$this->user = $user;
}
/**
* Returns whether this cron task can run, given current board configuration.
*
* @return bool
*/
public function is_runnable()
{
return $this->config['delete_user_enabled'] ? true : false;
}
/**
* Diese Funktion wird vom Cron Task aufgerufen und überprüft ob der Cron-Task laufen soll, oder nicht
* gibt sie true zurück wird die run() Methode aufgerufen
*
* @return bool
*/
public function should_run()
{
$check_time = (int) gmdate('mdY',time());
return (($this->config['delete_user_last_run'] + $this->config['delete_user_cron_period']) < time() ) ? false : true;
}
public function run()
{
include($phpbb_root_path . 'includes_cms/class.cms_user.' . $phpEx);
$user_OBJ = new cms_user();
$sql = "SELECT udt.*, ut.username
FROM " . $table_prefix . "users_delete udt
LEFT JOIN " . USERS_TABLE . " ut
ON ut.user_id = udt.user_id
WHERE delete_time < " . (time() - 3600) . "
AND deleted <> 1";
$result = $db->sql_query($sql);
while ($dat_ARY = $db->sql_fetchrow($result))
{
echo $dat_ARY['username'] . "<br/>";
//Benutzer löschen
if ($user_OBJ->delete($dat_ARY['user_id'], $config['delete_user_mode']))
{
$sql = "UPDATE " . $table_prefix . "users_delete
SET deleted = 1
WHERE user_id = " . $dat_ARY['user_id'];
$result = $db->sql_query($sql);
}
}
}
}
?>
There are only 10 types of people in the world: Those who understand binary, and those who don't
- D@ve
- Ehemaliges Teammitglied
- Beiträge: 3842
- Registriert: 28.08.2002 19:33
- Wohnort: Bretzfeld
- Kontaktdaten:
Re: Cron-Einträge
Hat sich erledigt, Fehler gefunden... war nur ein blöder underscore im namespace der da nicht hingehört hat...
Wie oft wird der Cron-Task denn regulär (also unabhängig von should_run()) aufgerufen? Bei jedem Seitenaufruf?
Irgendwie wird mein crontask nicht ausgeführt, obwohl ich bei should_run() und is_runnable() pauschal true zurückgebe...
Gruß, Dave
Wie oft wird der Cron-Task denn regulär (also unabhängig von should_run()) aufgerufen? Bei jedem Seitenaufruf?
Irgendwie wird mein crontask nicht ausgeführt, obwohl ich bei should_run() und is_runnable() pauschal true zurückgebe...
Gruß, Dave
There are only 10 types of people in the world: Those who understand binary, and those who don't
- D@ve
- Ehemaliges Teammitglied
- Beiträge: 3842
- Registriert: 28.08.2002 19:33
- Wohnort: Bretzfeld
- Kontaktdaten:
Re: Cron-Einträge
Läuft immer noch nicht... grmpf
Muss der Ordner "cron" heißen und einen Unterordner task haben? Ist das Konvention, oder geht das auch anders?
Muss der Ordner "cron" heißen und einen Unterordner task haben? Ist das Konvention, oder geht das auch anders?
There are only 10 types of people in the world: Those who understand binary, and those who don't
- Elsensee
- Ehemaliges Teammitglied
- Beiträge: 832
- Registriert: 19.05.2010 15:14
- Wohnort: Hamburg
- Kontaktdaten:
Re: Cron-Einträge
Ich denke, du musst die Extension deinstallieren und wieder neu installieren bei Änderungen an der services.yml, wenn du das noch nicht getan hast. (Es sollte auch bereits helfen, den Cache zu löschen)
Wenn gerade kein maximal einstündiger Cron-Lock aktiv ist, wird Cron übrigens immer aufgerufen, wenn's grad was gibt, was man machen kann.
Wenn gerade kein maximal einstündiger Cron-Lock aktiv ist, wird Cron übrigens immer aufgerufen, wenn's grad was gibt, was man machen kann.

Posts mostly powered by GitHub and phpBB.de Cross-Reference
2015-03-20 - Never forget
2015-03-20 - Never forget

- D@ve
- Ehemaliges Teammitglied
- Beiträge: 3842
- Registriert: 28.08.2002 19:33
- Wohnort: Bretzfeld
- Kontaktdaten:
Re: Cron-Einträge
Deinstalliert und Cache gelöscht habe ich natürlich schon...
Was ist ein Cron-Lock, bzw. wodurch wird der ausgelöst?
Was ist ein Cron-Lock, bzw. wodurch wird der ausgelöst?
There are only 10 types of people in the world: Those who understand binary, and those who don't
Re: Cron-Einträge
Moin,
Du könntest auch mal versuchen einiges über den Command Line Interpreter (cli) zu aktivieren.
Leider sind die Wiki phpbb.com Seiten momentan nicht erreichbar.
Wenn dein Webserver läuft könntest Du von der Command Line (Dosbox, Terminal, Konsole...) einige Befehle direkt an die phpBB Engine schicken.
Du könntest auch mal versuchen einiges über den Command Line Interpreter (cli) zu aktivieren.
Leider sind die Wiki phpbb.com Seiten momentan nicht erreichbar.
Wenn dein Webserver läuft könntest Du von der Command Line (Dosbox, Terminal, Konsole...) einige Befehle direkt an die phpBB Engine schicken.
Code: Alles auswählen
./bin/phpbbcli.php cron:list
./bin/phpbbcli.php cron:run
./bin/phpbbcli.php config:get cron_lock
./bin/phpbbcli.php config:set cron_lock 0
./bin/phpbbcli.php config:set drdeath_f1webtip_reminder_last_run 1
./bin/phpbbcli.php cron:run drdeath.f1webtip.cron.task.email_reminder
./bin/phpbbcli.php cron:run cron.task.core.tidy_database
- Unimatrix_0
- Mitglied
- Beiträge: 392
- Registriert: 03.11.2007 10:50
- Kontaktdaten:
Re: Cron-Einträge
Wenn phpbb.com wieder online ist, kannst du auch mit folgender Extension den Status der CronTasks abrufen:
https://www.phpbb.com/community/viewtop ... &t=2256961
https://www.phpbb.com/community/viewtop ... &t=2256961