2021-12-03 03:01:39 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
/** @file */
|
2016-05-20 02:42:45 +00:00
|
|
|
|
2022-02-16 04:08:28 +00:00
|
|
|
namespace Code\Daemon;
|
2016-05-20 02:42:45 +00:00
|
|
|
|
2022-02-16 04:08:28 +00:00
|
|
|
use Code\Lib as Zlib;
|
2018-07-03 05:43:41 +00:00
|
|
|
|
2022-11-27 09:15:28 +00:00
|
|
|
class Queue implements DaemonInterface
|
2021-12-03 03:01:39 +00:00
|
|
|
{
|
2016-05-20 02:42:45 +00:00
|
|
|
|
2022-11-27 09:15:28 +00:00
|
|
|
public function run(int $argc, array $argv): void
|
2021-12-03 03:01:39 +00:00
|
|
|
{
|
2022-10-23 09:51:54 +00:00
|
|
|
$queue_id = ($argc > 1) ? $argv[1] : '';
|
2016-05-20 02:42:45 +00:00
|
|
|
|
2021-12-03 03:01:39 +00:00
|
|
|
logger('queue: start');
|
2016-05-20 02:42:45 +00:00
|
|
|
|
2021-12-03 03:01:39 +00:00
|
|
|
// delete all queue items more than 3 days old
|
|
|
|
// but first mark these sites dead if we haven't heard from them in a month
|
2016-05-20 02:42:45 +00:00
|
|
|
|
2022-10-23 09:51:54 +00:00
|
|
|
$oldqItems = q("select outq_posturl from outq where outq_created < %s - INTERVAL %s",
|
2021-12-03 03:01:39 +00:00
|
|
|
db_utcnow(),
|
|
|
|
db_quoteinterval('3 DAY')
|
|
|
|
);
|
2022-10-23 09:51:54 +00:00
|
|
|
if ($oldqItems) {
|
|
|
|
foreach ($oldqItems as $qItem) {
|
|
|
|
$h = parse_url($qItem['outq_posturl']);
|
|
|
|
$site_url = $h['scheme'] . '://' . $h['host'] . (($h['port']) ? ':' . $h['port'] : '');
|
|
|
|
q("update site set site_dead = 1 where site_dead = 0 and site_url = '%s' and site_update < %s - INTERVAL %s",
|
|
|
|
dbesc($site_url),
|
2021-12-03 03:01:39 +00:00
|
|
|
db_utcnow(),
|
|
|
|
db_quoteinterval('1 MONTH')
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
2016-05-20 02:42:45 +00:00
|
|
|
|
2023-02-06 20:50:39 +00:00
|
|
|
logger('Removing ' . count($oldqItems) . ' old queue entries');
|
2022-10-23 09:51:54 +00:00
|
|
|
q("DELETE FROM outq WHERE outq_created < %s - INTERVAL %s",
|
2021-12-03 03:01:39 +00:00
|
|
|
db_utcnow(),
|
|
|
|
db_quoteinterval('3 DAY')
|
|
|
|
);
|
2016-05-20 02:42:45 +00:00
|
|
|
|
2023-02-06 21:40:25 +00:00
|
|
|
$deliveries = [];
|
|
|
|
|
2021-12-03 03:01:39 +00:00
|
|
|
if ($queue_id) {
|
2022-10-23 09:51:54 +00:00
|
|
|
$qItems = q("SELECT * FROM outq WHERE outq_hash = '%s' LIMIT 1",
|
2021-12-03 03:01:39 +00:00
|
|
|
dbesc($queue_id)
|
|
|
|
);
|
2023-02-06 20:50:39 +00:00
|
|
|
logger('queue deliver: ' . $qItems[0]['outq_hash'] . ' to ' . $qItems[0]['outq_posturl'], LOGGER_DEBUG);
|
2022-10-23 09:51:54 +00:00
|
|
|
Zlib\Queue::deliver(array_shift($qItems));
|
|
|
|
}
|
|
|
|
else {
|
2023-02-06 21:40:25 +00:00
|
|
|
$qItems = q("SELECT * FROM outq WHERE outq_delivered = 0 and outq_scheduled < %s ",
|
|
|
|
db_utcnow()
|
|
|
|
);
|
|
|
|
if ($qItems) {
|
|
|
|
foreach ($qItems as $qItem) {
|
|
|
|
$deliveries[] = $qItem['outq_hash'];
|
2022-10-23 09:51:54 +00:00
|
|
|
}
|
2023-02-11 21:22:06 +00:00
|
|
|
do_delivery($deliveries, true);
|
2023-02-06 21:40:25 +00:00
|
|
|
}
|
2022-10-23 09:51:54 +00:00
|
|
|
}
|
2021-12-03 03:01:39 +00:00
|
|
|
}
|
2016-05-20 02:42:45 +00:00
|
|
|
}
|