View Single Post
  #898  
Old 07-22-2008, 01:34 PM
toivo toivo is offline
 
Join Date: Jul 2007
Location: Sydney, Australia
Posts: 60
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hi Kevin,

Here is the code, working under vB 3.6.8. Replace the variables $forum_url and $cron_url.

The script reads the home page, extracts the cron.php with the parameters from the result and then sends a request for cron.php which runs the scheduled task(s).

Check the results from the vB back end to adjust the interval in your crontab or Windows scheduler, depending on which other cron jobs your site has.

Code:
<?php
/**
 * @forum_read.php
 * @20080723 toivo@totaldata.biz
 * reads the forum home page and triggers cron jobs to run
 * tested on vBulletin 3.6.8.
 * requires php >= 4.3.0
 */

$forum_url = 'http://example.com/testvb/index.php';
// cron url from <img src=
$cron_url = 'http://example.com/testvb/cron.php?';

// access forum
$run_status = forum_read($forum_url, $cron_url);
return;

function forum_read($forum_url, $cron_url) {
//  read file contents
  $page = file_get_contents($forum_url);
  if ($page === false) {
  	  $msg = "forum_read.php unable to read ".$forum_url;
  	  error_log($msg);
  	  return false;
  }
// find cron.php
  $cron_start_pos = strpos($page, $cron_url);

  $msg = '';
  if ($cron_start_pos === false) {
  	  $msg = "forum_read.php unable to find cron string";
  	  error_log($msg);
  	  return false;
  }

// end of url
  $cron_end_pos = strpos($page, '"', $cron_start_pos);
  if ($cron_end_pos === false) {
  	  $msg = "forum_read.php unable to find end of cron string";
  	  error_log($msg);
  	  return false;
  }
// extract full url string with cron.php
  $cron_url_length = $cron_end_pos - $cron_start_pos;
  $cron_full_url = substr($page, $cron_start_pos, $cron_url_length );
 //  read cron.php with parameters
  $page = file_get_contents($cron_full_url);
  if ($page === false) {
      $msg = 'forum_read.php '.$cron_full_url." : - PROBLEM?";
  	  error_log($msg);
  	  return false;
  }
  return true;
}
?>
If you are going to run it from Unix/Linux, a shell script similar to the following can be scheduled to run from a crontab entry:

Code:
#!/bin/bash
# load forum home page and read cron.php
php /root/forum_read/forum_read.php
exit 0

In Windows, you can run the script from a command file through the Windows scheduler.

Regards,
toivo
Reply With Quote
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.02622 seconds
  • Memory Usage 1,765KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD_SHOWPOST
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (2)bbcode_code
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_box
  • (1)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit_info
  • (1)postbit
  • (1)postbit_onlinestatus
  • (1)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • reputationlevel
  • showthread
Included Files:
  • ./showpost.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/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showpost_start
  • bbcode_fetch_tags
  • bbcode_create
  • postbit_factory
  • showpost_post
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • showpost_complete