Merge pull request #6642 from annando/worker-timezone
authorTobias Diekershoff <tobias.diekershoff@gmx.net>
Tue, 12 Feb 2019 07:50:32 +0000 (08:50 +0100)
committerGitHub <noreply@github.com>
Tue, 12 Feb 2019 07:50:32 +0000 (08:50 +0100)
Ensure that "strtotime" returns the correct timestamp

mod/worker.php
src/Core/Worker.php

index af778f8..1afbfe8 100644 (file)
@@ -17,6 +17,9 @@ function worker_init()
                return;
        }
 
+       // Ensure that all "strtotime" operations do run timezone independent
+       date_default_timezone_set('UTC');
+
        // We don't need the following lines if we can execute background jobs.
        // So we just wake up the worker if it sleeps.
        if (function_exists("proc_open")) {
index 5deb33a..a6fee3b 100644 (file)
@@ -40,6 +40,9 @@ class Worker
        {
                $a = \get_app();
 
+               // Ensure that all "strtotime" operations do run timezone independent
+               date_default_timezone_set('UTC');
+
                self::$up_start = microtime(true);
 
                // At first check the maximum load. We shouldn't continue with a high load
@@ -650,8 +653,7 @@ class Worker
                                $argv[0] = basename($argv[0]);
 
                                // How long is the process already running?
-                               // For some weird reasons we cannot use "time()" here. It doesn't seem to be in UTC.
-                               $duration = (strtotime(DateTimeFormat::utcNow()) - strtotime($entry["executed"])) / 60;
+                               $duration = (time() - strtotime($entry["executed"])) / 60;
                                if ($duration > $max_duration) {
                                        Logger::log("Worker process ".$entry["pid"]." (".substr(json_encode($argv), 0, 50).") took more than ".$max_duration." minutes. It will be killed now.");
                                        posix_kill($entry["pid"], SIGTERM);