mirror of
https://github.com/friendica/friendica
synced 2025-04-26 15:10:11 +00:00
The frontend worker is removed
This commit is contained in:
parent
9a6141dcbe
commit
a81ac835a1
10 changed files with 8 additions and 220 deletions
|
@ -1072,95 +1072,6 @@ class Worker
|
|||
self::$db_duration_write += (microtime(true) - $stamp);
|
||||
}
|
||||
|
||||
/**
|
||||
* Call the front end worker
|
||||
*
|
||||
* @return void
|
||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||
*/
|
||||
public static function callWorker()
|
||||
{
|
||||
if (!DI::config()->get("system", "frontend_worker")) {
|
||||
return;
|
||||
}
|
||||
|
||||
$url = DI::baseUrl() . '/worker';
|
||||
DI::httpRequest()->fetch($url, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Call the front end worker if there aren't any active
|
||||
*
|
||||
* @return void
|
||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||
*/
|
||||
public static function executeIfIdle()
|
||||
{
|
||||
self::checkDaemonState();
|
||||
|
||||
if (!DI::config()->get("system", "frontend_worker")) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Do we have "proc_open"? Then we can fork the worker
|
||||
if (function_exists("proc_open")) {
|
||||
// When was the last time that we called the worker?
|
||||
// Less than one minute? Then we quit
|
||||
if ((time() - DI::config()->get("system", "worker_started")) < 60) {
|
||||
return;
|
||||
}
|
||||
|
||||
DI::config()->set("system", "worker_started", time());
|
||||
|
||||
// Do we have enough running workers? Then we quit here.
|
||||
if (self::tooMuchWorkers()) {
|
||||
// Cleaning dead processes
|
||||
self::killStaleWorkers();
|
||||
DI::modelProcess()->deleteInactive();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
self::runCron();
|
||||
|
||||
Logger::info('Call worker');
|
||||
self::spawnWorker();
|
||||
return;
|
||||
}
|
||||
|
||||
// We cannot execute background processes.
|
||||
// We now run the processes from the frontend.
|
||||
// This won't work with long running processes.
|
||||
self::runCron();
|
||||
|
||||
self::clearProcesses();
|
||||
|
||||
$workers = self::activeWorkers();
|
||||
|
||||
if ($workers == 0) {
|
||||
self::callWorker();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes long running worker processes
|
||||
*
|
||||
* @return void
|
||||
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||
*/
|
||||
public static function clearProcesses()
|
||||
{
|
||||
$timeout = DI::config()->get("system", "frontend_worker_timeout", 10);
|
||||
|
||||
/// @todo We should clean up the corresponding workerqueue entries as well
|
||||
$stamp = (float)microtime(true);
|
||||
$condition = ["`created` < ? AND `command` = 'worker.php'",
|
||||
DateTimeFormat::utc("now - ".$timeout." minutes")];
|
||||
DBA::delete('process', $condition);
|
||||
self::$db_duration = (microtime(true) - $stamp);
|
||||
self::$db_duration_write += (microtime(true) - $stamp);
|
||||
}
|
||||
|
||||
/**
|
||||
* Runs the cron processes
|
||||
*
|
||||
|
@ -1230,7 +1141,7 @@ class Worker
|
|||
{
|
||||
// Worker and daemon are started from the command line.
|
||||
// This means that this is executed by a PHP interpreter without runtime limitations
|
||||
if (in_array(DI::mode()->getExecutor(), [Mode::DAEMON, Mode::WORKER])) {
|
||||
if (function_exists('pcntl_fork') && in_array(DI::mode()->getExecutor(), [Mode::DAEMON, Mode::WORKER])) {
|
||||
self::forkProcess($do_cron);
|
||||
} else {
|
||||
$process = new Core\Process(DI::logger(), DI::mode(), DI::config(),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue