vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 3.6 Add-ons (https://vborg.vbsupport.ru/forumdisplay.php?f=194)
-   -   Administrative and Maintenance Tools - Schedule vB's tasks with a host crontab (https://vborg.vbsupport.ru/showthread.php?t=122647)

Nxs 07-30-2006 10:00 PM

Schedule vB's tasks with a host crontab
 
Schedule vB's tasks with a host crontab

!!! Warning You run this script at your OWN risk, I will not be responsible for any damage caused !!!

Description:
vBulletins schedule tasks only run when a user is browsing your forum. With the release of 3.6 and RSS imports this has caused problems for slow moving forums importing fast moving RSS feeds (If a news item passes fully through the RSS feed before a visitor browses your forums causing the import to be processed then content could be lost)
Solution:
If your host supports "Cron Jobs" you can call the attached PHP file periodically to force vBulletin to catch up with its internal scheduled tasks.
Installation
  1. Download the attached file and edit the variables at the top to match your forum installation
  2. Upload the file to somewhere on your host
  3. Schedule this file to run at an appropriate interval
eg. (to run every hour at 15m past the hour, 12:15 - 13:15 - 14:15 - etc.)
Code:

15 * * * * /usr/bin/php -f /home/myuser/exec-cron.php >/dev/null 2>&1
Detailed Information
Unfortunatly running the cron.php from the vBulletin files will only process the next pending single task, This short script simply queries the scheduled task database to count how many tasks are pending, it then calls the cron.php routine that number of times - thus your scheduled tasks are kept up to date.

This is my first ever PHP script so please don't expect a masterpiece from a rocket scientist, if anyone has any comments or suggestions please drop me a PM

Nxs 07-31-2006 03:44 PM

I wasn't at all sure which forum to drop this script into, but as it relates mostly to the new RSS feature in 3.6 I guessed here was as good a place, sorry if it isn't.

Evercraft 07-31-2006 04:19 PM

Very nice! :)

Milad 08-01-2006 07:18 AM

very good work

Now vBulletin has real cronjop

Nxs 08-01-2006 07:44 AM

Quote:

Originally Posted by Milad
very good work

Now vBulletin has real cronjop

Well, only if you schedule this script to run every minute - and i'm sure your host will have something to say about that :)

Mine just runs every hour and typicaly has about 5 or 6 jobs to run at that point if no one has visited the forums in that time, works really well for importing RSS feeds tho.

jmw 03-29-2007 04:50 PM

Does this work with 3.6.5? It appears the "15 minute after the hour" example has the file name backwards.

dooch 05-04-2007 04:53 PM

yes it does work with 3.6.5 I had to change it slightly for non-localhost connections ;) Here is the part you need to change.

PHP Code:

$ec_localhost "localhost";     //Dooch's Additional bit.  Add your remote mysql db info her eif not localhost!
$ec_dbname "db";            // your vBulletin database
$ec_dbuser "user";           // user with READ access
$ec_dbpass "passw";           // password for the above user
$ec_dbprefix "";                // database prefix, if required

// This should be the location of your forum folder (where cron.php resides)
$ec_pathtoforum "path";

// Specify the FULL location of your PHP installation (how to call php)
$ec_pathtophp "/usr/bin/php";

// Maximum number of tasks to run on one pass
$ec_max 10;

/**************************************************
 ****  DO NOT CHANGE THE CODE BELOW THIS LINE  ****
 **************************************************/


// Connect to MySQL
$ec_link mysql_connect($ec_localhost,$ec_dbuser,$ec_dbpass);  //note the change here for non-localhost dudes. ;) 

Nice work dude!

INSTALLED

Thanks

Dooch

NiTRoN 05-06-2007 07:27 AM

Sweet this is excellent for small boards.. I've been waiting sooooooo loooooong for this.. :)

trilljester 06-27-2007 03:04 PM

This is working nicely. I can't believe that VB doesn't offer something like this to run the scheduled tasks, because without traffic, those tasks will not run. That's just stupid.

Thanks!

gamma912 07-24-2007 07:40 PM

yea thats true - Thanks Im using it now it works great :)

jmw 08-09-2007 09:21 PM

Doesn't work with vbulletin 3.6.8

OmniBuzz 07-07-2008 02:41 PM

any chance to have an update for the latest release of Vbulletin ?

trilljester 08-03-2008 09:29 PM

Yeah, I can't seem to get it to work anymore. Sad, but I'm uninstalling. I'll have to write a shell script or something to trigger the cron in VB every 15 minutes or something.

Quarterbore 08-12-2008 07:42 PM

I need something like this for my Devopment board where I need to test but there are no users to make the scripts work. I will see if I can get it working on my 3.6.x site.

plothook 06-19-2009 08:09 PM

This works for me using vB 3.8.3

save the code below into a script file named vbcronjob.sh, and call the script from cron (I schedule my crontab for once a minute). Be sure to chmod +x the script. The logic in this shell script is pretty much the same as in the cron-exec.php script you can download here.

you should also disable the cron image inserted at the bottom of the pages presented to your users. See This Mod for a simple plugin to do that.
Code:

#!/bin/bash

#----- environment setup -----#
# Absolute path to vBulletin root (where cron.php is located)
ct_pathtoforum='/home/user/public_html/forum/'
# Max tasks to run on one pass
ct_max=10

#----- database setup -----#
ct_dbhost='localhost'    # your MySQL Server
ct_dbport='3306'          # your MySQL Port
ct_dbname='forum'        # your vBulletin database
ct_dbuser='username'      # user with READ access
ct_dbpass='password'      # password for the above user
ct_dbprefix=''            # database prefix, if required

#----- query execution ----#
ct_date=`date "+%s"`      # current unix time
ct_connect="--protocol=socket -h$ct_dbhost -P$ct_dbport -u$ct_dbuser -p$ct_dbpass -D$ct_dbname"
ct_query="SELECT COUNT(*) FROM ${ct_dbprefix}cron WHERE active=1 AND nextrun < $ct_date;"
# -A, No automatic rehashing, gives quicker start.
# -B, Batch mode.
# -N, Don't write column names.
# -n, Flush buffer.
# -q, Don't cache.
# -r, Write raw fields.
# -e, Execute command and quit.
ct_repeat=`mysql $ct_connect -A -B -N -n -q -r -e"$ct_query"`

#----- cron execution ----#
ct_pathtophp=`which php` # path to PHP
cd $ct_pathtoforum
if [ "$ct_repeat" -gt "$ct_max" ]; then ct_repeat=$ct_max; fi
for ((i=0; ct_repeat>i; i++)); do
#echo "$i"
$ct_pathtophp ./cron.php >& /dev/null
sleep 5
done

exit 0



All times are GMT. The time now is 08:08 PM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01299 seconds
  • Memory Usage 1,758KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (2)bbcode_code_printable
  • (1)bbcode_php_printable
  • (1)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (15)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete