Oppaitime's version of Gazelle
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.php 3.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <?
  2. //--------------Schedule page -------------------------------------------//
  3. // This page is run every 15 minutes by cron.
  4. set_time_limit(50000);
  5. ob_end_flush();
  6. gc_enable();
  7. $ScheduleDebug = false;
  8. $PCount = chop(shell_exec("/usr/bin/pgrep -cf schedule.php"));
  9. if ($PCount > 3) { // 3 because the cron job starts two processes and pgrep finds itself
  10. die("schedule.php is already running. Exiting ($PCount)\n");
  11. }
  12. $AS = check_perms('admin_schedule');
  13. function run_all_in($Dir) {
  14. $Tasks = array_diff(scandir(SERVER_ROOT.'/sections/schedule/'.$Dir, 1), array('.', '..'));
  15. extract($GLOBALS);
  16. foreach ($Tasks as $Task) {
  17. $TimeStart = microtime(true);
  18. include($Dir.'/'.$Task);
  19. if ($ScheduleDebug) {
  20. echo $Dir.'/'.$Task.': '.number_format(microtime(true)-$TimeStart,3).($AS?"<br>":"\n");
  21. }
  22. }
  23. }
  24. if ((!isset($_REQUEST['key']) || $_REQUEST['key'] != SCHEDULE_KEY) && !$AS) {
  25. error(403);
  26. }
  27. if ($AS) {
  28. authorize();
  29. View::show_header();
  30. echo '<div class="box">';
  31. }
  32. $DB->query("
  33. SELECT NextHour, NextDay, NextBiWeekly
  34. FROM schedule");
  35. list($Hour, $Day, $BiWeek) = $DB->next_record();
  36. $NextHour = date('H', time(date('H') + 1, 0, 0, date('m'), date('d'), date('Y')));
  37. $NextDay = date('d', time(0, 0, 0, date('m'), date('d') + 1, date('Y')));
  38. $NextBiWeek = (date('d') < 22 && date('d') >= 8) ? 22 : 8;
  39. $DB->query("
  40. UPDATE schedule
  41. SET NextHour = $NextHour, NextDay = $NextDay, NextBiWeekly = $NextBiWeek");
  42. $sqltime = sqltime();
  43. echo "$sqltime".($AS?"<br>":"\n");
  44. //-------------- Run every time ------------------------------------------//
  45. if (!(isset($_GET['notevery']) && $_GET['notevery'])) {
  46. run_all_in('every');
  47. echo "Ran every-time functions".($AS?'<br>':"\n");
  48. }
  49. //-------------- Run every hour ------------------------------------------//
  50. if ($Hour != $NextHour || (isset($_GET['runhour']) && $_GET['runhour'])) {
  51. run_all_in('hourly');
  52. echo "Ran hourly functions".($AS?'<br>':"\n");
  53. }
  54. //-------------- Run every day -------------------------------------------//
  55. if ($Day != $NextDay || (isset($_GET['runday']) && $_GET['runday'])) {
  56. run_all_in('daily');
  57. echo "Ran daily functions".($AS?'<br>':"\n");
  58. }
  59. //-------------- Run every week -------------------------------------------//
  60. if (($Day != $NextDay && date('w') == 0) || (isset($_GET['runweek']) && $_GET['runweek'])) {
  61. run_all_in('weekly');
  62. echo "Ran weekly functions".($AS?'<br>':"\n");
  63. }
  64. //--------------- Run twice per month -------------------------------------//
  65. if ($BiWeek != $NextBiWeek || (isset($_GET['runbiweek']) && $_GET['runbiweek'])) {
  66. run_all_in('biweekly');
  67. echo "Ran bi-weekly functions".($AS?'<br>':"\n");
  68. }
  69. //---------------- Run every month -----------------------------------------//
  70. if (($BiWeek != $NextBiWeek && $BiWeek == 8) || (isset($_GET['runmonth']) && $_GET['runmonth'])) {
  71. run_all_in('monthly');
  72. echo "Ran monthly functions".($AS?'<br>':"\n");
  73. }
  74. //---------------- Run on request ------------------------------------------//
  75. if (isset($_GET['runmanual']) && $_GET['runmanual']) {
  76. run_all_in('manually');
  77. echo "Ran manual functions".($AS?'<br>':"\n");
  78. }
  79. if ($AS) {
  80. echo '</div>';
  81. View::show_footer();
  82. } else {
  83. echo "-------------------------\n\n";
  84. }
  85. ?>