Browse Source

Update - Updated Archive Code so it can be run in Cron Job

main
PupperWoff 7 years ago
committed by discomrade
parent
commit
c015c4a8b4
  1. 6
      inc/archive.php
  2. 5
      inc/config.php
  3. 15
      inc/functions.php
  4. 4
      inc/mod/pages.php
  5. 34
      tools/archive_cli.php

6
inc/archive.php

@ -91,7 +91,8 @@ class Archive {
// Purge Threads that have timed out
self::purgeArchive();
if(!$config['archive']['cron_job'])
self::purgeArchive();
// Rebuild Archive Index
self::buildArchiveIndex();
@ -212,7 +213,8 @@ class Archive {
return;
// Purge Archive
self::purgeArchive();
if(!$config['archive']['cron_job']['purge'])
self::purgeArchive();
// Rebuild Archive Index
self::buildArchiveIndex();

5
inc/config.php

@ -1317,6 +1317,11 @@
// Number of chars in snippet
$config['archive']['snippet_len'] = 400;
// If any is set to run in crom both will be run in cron regardless
// Archiving is run in cron job
$config['archive']['cron_job']['archiving'] = false;
// Purging of archive is run in cron job
$config['archive']['cron_job']['purge'] = false;
// For load balancing, having a seperate server (and domain/subdomain) for serving static content is

15
inc/functions.php

@ -1519,6 +1519,11 @@ function deletePost($id, $error_if_doesnt_exist=true, $rebuild_after=true) {
function clean($pid = false) {
global $board, $config;
// If we are doing the archiving in cron leave cleaning of overflow for now
if($config['archive']['cron_job']['archiving'])
return;
$offset = round($config['max_pages']*$config['threads_per_page']);
// I too wish there was an easier way of doing this...
@ -1527,8 +1532,10 @@ function clean($pid = false) {
$query->execute() or error(db_error($query));
while ($post = $query->fetch(PDO::FETCH_ASSOC)) {
Archive::archiveThread($post['id']);
if ($pid) modLog("Automatically archived thread #{$post['id']} due to new thread #{$pid}");
if($config['archive']['threads']) {
Archive::archiveThread($post['id']);
if ($pid) modLog("Automatically archived thread #{$post['id']} due to new thread #{$pid}");
}
deletePost($post['id'], false, false);
if ($pid) modLog("Automatically deleting thread #{$post['id']} due to new thread #{$pid}");
}
@ -1550,6 +1557,10 @@ function clean($pid = false) {
while ($post = $query->fetch(PDO::FETCH_ASSOC)) {
if ($post['reply_count'] < $page*$config['early_404_replies']) {
if($config['archive']['threads']) {
Archive::archiveThread($post['thread_id']);
if ($pid) modLog("Automatically archived thread #{$post['thread_id']} due to new thread #{$pid} (early 404 is set, #{$post['thread_id']} had {$post['reply_count']} replies)");
}
deletePost($post['thread_id'], false, false);
if ($pid) modLog("Automatically deleting thread #{$post['thread_id']} due to new thread #{$pid} (early 404 is set, #{$post['thread_id']} had {$post['reply_count']} replies)");
}

4
inc/mod/pages.php

@ -3613,10 +3613,6 @@ function mod_view_archive($boardName) {
Archive::featureThread($_POST['id']);
}
// // Purge Threads that have timed out, and rebuild index if anyone was purged
// if(Archive::purgeArchive() != 0)
// Archive::buildArchiveIndex();
$query = query(sprintf("SELECT `id`, `snippet`, `featured` FROM ``archive_%s`` WHERE `lifetime` > %d ORDER BY `lifetime` DESC", $board['uri'], time())) or error(db_error());
$archive = $query->fetchAll(PDO::FETCH_ASSOC);

34
tools/archive_cli.php

@ -0,0 +1,34 @@
<?php
// Run in Cron by using "cd /var/www/html/tools/ && /usr/bin/php ./archive_cli.php"
require dirname(__FILE__) . '/inc/cli.php';
// Make sure cript is run from commandline interface
if(php_sapi_name() !== 'cli')
exit();
// Set config variables so we aren't hindered in archiving or purging.
$config['archive']['cron_job']['archiving'] = false;
$config['archive']['cron_job']['purge'] = false;
// Get list of all boards
$boards = listBoards();
// Go through all boards cleaning the catalog and pruning archive
foreach($boards as &$board) {
// Set Dir Value
$board['dir'] = sprintf($config['board_path'], $board['uri']);
// Open board "config"
openBoard($board['uri']);
// Archive Threads that are pushed off Catalog
clean();
// Clean Archive Purge old entries off it
Archive::RebuildArchiveIndexes();
}
?>
Loading…
Cancel
Save