]>
Commit | Line | Data |
---|---|---|
cd2cd415 | 1 | #!/usr/bin/php |
1d3a17c7 | 2 | <?php |
de696427 AD |
3 | // this daemon runs in the background and updates all feeds |
4 | // continuously | |
5 | ||
34e420fb AD |
6 | // define('DEFAULT_ERROR_LEVEL', E_ALL); |
7 | define('DEFAULT_ERROR_LEVEL', E_ERROR | E_WARNING | E_PARSE); | |
550e37d5 | 8 | |
6eafcac6 | 9 | declare(ticks = 1); |
de696427 | 10 | |
de696427 | 11 | define('DISABLE_SESSIONS', true); |
34e420fb AD |
12 | |
13 | require_once "version.php"; | |
14 | ||
010c16f1 | 15 | if (strpos(VERSION, ".99") !== false || getenv('DAEMON_XDEBUG')) { |
34e420fb AD |
16 | define('DAEMON_EXTENDED_DEBUG', true); |
17 | } | |
de696427 | 18 | |
3b3d116e AD |
19 | define('PURGE_INTERVAL', 3600); // seconds |
20 | ||
de696427 AD |
21 | require_once "sanity_check.php"; |
22 | require_once "config.php"; | |
c6784aea | 23 | |
64eb624c AD |
24 | if (!defined('PHP_EXECUTABLE')) { |
25 | define('PHP_EXECUTABLE', '/usr/bin/php'); | |
26 | } | |
27 | ||
c6784aea | 28 | if (!ENABLE_UPDATE_DAEMON) { |
69ff793a | 29 | die("Please enable option ENABLE_UPDATE_DAEMON in config.php\n"); |
c6784aea AD |
30 | } |
31 | ||
de696427 AD |
32 | require_once "db.php"; |
33 | require_once "db-prefs.php"; | |
34 | require_once "functions.php"; | |
de696427 | 35 | |
34e420fb | 36 | error_reporting(DEFAULT_ERROR_LEVEL); |
219bd8fc | 37 | |
6eafcac6 | 38 | function sigint_handler() { |
cfa43e02 | 39 | unlink(LOCK_DIRECTORY . "/update_daemon.lock"); |
6eafcac6 AD |
40 | die("Received SIGINT. Exiting.\n"); |
41 | } | |
42 | ||
4052b32d AD |
43 | function sigalrm_handler() { |
44 | die("received SIGALRM, hang in feed update?\n"); | |
45 | } | |
46 | ||
6eafcac6 | 47 | pcntl_signal(SIGINT, sigint_handler); |
4052b32d | 48 | pcntl_signal(SIGALRM, sigalrm_handler); |
6eafcac6 AD |
49 | |
50 | $lock_handle = make_lockfile("update_daemon.lock"); | |
51 | ||
52 | if (!$lock_handle) { | |
53 | die("error: Can't create lockfile ($lock_filename). ". | |
69ff793a | 54 | "Maybe another daemon is already running.\n"); |
6eafcac6 AD |
55 | } |
56 | ||
f29ba148 AD |
57 | // Testing database connection. |
58 | // It is unnecessary to start the fork loop if database is not ok. | |
de696427 AD |
59 | $link = db_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME); |
60 | ||
61 | if (!$link) { | |
62 | if (DB_TYPE == "mysql") { | |
63 | print mysql_error(); | |
64 | } | |
65 | // PG seems to display its own errors just fine by default. | |
66 | return; | |
67 | } | |
68 | ||
fd631206 AD |
69 | db_close($link); |
70 | ||
3b3d116e AD |
71 | $last_purge = 0; |
72 | ||
1f4ad53c | 73 | while (true) { |
a545b564 | 74 | |
fd631206 | 75 | passthru(PHP_EXECUTABLE . " update_daemon_loop.php SRV_RUN_OK"); |
9cd7c995 | 76 | |
6f9e33e4 | 77 | _debug("Sleeping for " . DAEMON_SLEEP_INTERVAL . " seconds..."); |
1f4ad53c | 78 | |
78ea1de0 | 79 | sleep(DAEMON_SLEEP_INTERVAL); |
de696427 AD |
80 | } |
81 | ||
de696427 AD |
82 | |
83 | ?> |