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.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  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), ['.', '..']);
  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) && (!isset($argv[1]) || $argv[1] != SCHEDULE_KEY) && !$AS) {
  25. error(403);
  26. }
  27. if ($AS) {
  28. authorize();
  29. View::show_header();
  30. echo '<div class="box">';
  31. }
  32. $ASBreak = $AS ? "<br>" : "\n";
  33. $DB->query("
  34. SELECT NextHour, NextDay, NextBiWeekly
  35. FROM schedule");
  36. list($Hour, $Day, $BiWeek) = $DB->next_record();
  37. $NextHour = date('H');
  38. $NextDay = date('d');
  39. $NextBiWeek = (date('d') < 22 && date('d') >= 8) ? 22 : 8;
  40. $DB->query("
  41. UPDATE schedule
  42. SET NextHour = $NextHour, NextDay = $NextDay, NextBiWeekly = $NextBiWeek");
  43. $sqltime = sqltime();
  44. echo $sqltime.$ASBreak;
  45. //-------------- Run every time ------------------------------------------//
  46. if (!(isset($_GET['notevery']) && $_GET['notevery'])) {
  47. run_all_in('every');
  48. echo "Ran every-time functions".$ASBreak;
  49. }
  50. //-------------- Run every hour ------------------------------------------//
  51. if ($Hour != $NextHour || (isset($_GET['runhour']) && $_GET['runhour'])) {
  52. run_all_in('hourly');
  53. echo "Ran hourly functions".$ASBreak;
  54. }
  55. //-------------- Run every day -------------------------------------------//
  56. if ($Day != $NextDay || (isset($_GET['runday']) && $_GET['runday'])) {
  57. run_all_in('daily');
  58. echo "Ran daily functions".$ASBreak;
  59. }
  60. //-------------- Run every week -------------------------------------------//
  61. if (($Day != $NextDay && date('w') == 0) || (isset($_GET['runweek']) && $_GET['runweek'])) {
  62. run_all_in('weekly');
  63. echo "Ran weekly functions".$ASBreak;
  64. }
  65. //--------------- Run twice per month -------------------------------------//
  66. if ($BiWeek != $NextBiWeek || (isset($_GET['runbiweek']) && $_GET['runbiweek'])) {
  67. run_all_in('biweekly');
  68. echo "Ran bi-weekly functions".$ASBreak;
  69. }
  70. //---------------- Run every month -----------------------------------------//
  71. if (($BiWeek != $NextBiWeek && $BiWeek == 8) || (isset($_GET['runmonth']) && $_GET['runmonth'])) {
  72. run_all_in('monthly');
  73. echo "Ran monthly functions".$ASBreak;
  74. }
  75. //---------------- Run on request ------------------------------------------//
  76. if (isset($_GET['runmanual']) && $_GET['runmanual']) {
  77. run_all_in('manually');
  78. echo "Ran manual functions".$ASBreak;
  79. }
  80. if ($AS) {
  81. echo '</div>';
  82. View::show_footer();
  83. } else {
  84. echo "-------------------------\n\n";
  85. }
  86. ?>