Hook calls can now be forked into a worker queue entry

This commit is contained in:
Michael 2018-02-06 22:52:36 +00:00
parent 66e3c1836e
commit 47d165cb25
9 changed files with 47 additions and 68 deletions

View file

@ -6,6 +6,7 @@ namespace Friendica\Core;
use Friendica\Core\Config;
use Friendica\Database\DBM;
use Friendica\Core\Worker;
use dba;
@ -185,6 +186,25 @@ class Addon
dba::close($r);
}
/**
* @brief Forks a hook.
*
* Use this function when you want to fork a hook via the worker.
*
* @param string $name of the hook to call
* @param string|array $data to transmit to the callback handler
*/
public static function ForkHooks($priority, $name, $data = null)
{
$a = get_app();
if (is_array($a->hooks) && array_key_exists($name, $a->hooks)) {
foreach ($a->hooks[$name] as $hook) {
Worker::add($priority, 'ForkHook', $name, json_encode($hook), json_encode($data));
}
}
}
/**
* @brief Calls a hook.
*

View file

@ -970,9 +970,6 @@ class Worker
// Run the cron job that calls all other jobs
self::add(PRIORITY_MEDIUM, "Cron");
// Run the cronhooks job separately from cron for being able to use a different timing
self::add(PRIORITY_MEDIUM, "CronHooks");
// Cleaning dead processes
self::killStaleWorkers();
}