Cron.php 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?php
  2. /**
  3. * @author mybsdc <[email protected]>
  4. * @date 2021/11/17
  5. * @time 11:23
  6. */
  7. namespace Luolongfei\App\Console;
  8. class Cron extends Base
  9. {
  10. /**
  11. * @var Cron
  12. */
  13. private static $instance;
  14. /**
  15. * @return Cron
  16. */
  17. public static function getInstance()
  18. {
  19. if (!self::$instance instanceof self) {
  20. self::$instance = new self();
  21. }
  22. return self::$instance;
  23. }
  24. private function __construct()
  25. {
  26. }
  27. private function __clone()
  28. {
  29. }
  30. /**
  31. * 验证 Cron 表达式是否合法
  32. */
  33. public function verify()
  34. {
  35. $cronExp = get_argv('cron_exp');
  36. if (preg_match('/^(?:\*(?:\/\d+)?|[0-5]?\d(?:,[0-5]?\d)*|[0-5]?\d-[0-5]?\d(?:\/\d+)?) (?:\*(?:\/\d+)?|(?:\d|0\d|1\d|2[0-3])(?:,(?:\d|0\d|1\d|2[0-3]))*|(?:\d|0\d|1\d|2[0-3])-(?:\d|0\d|1\d|2[0-3])(?:\/\d+)?) (?:\*(?:\/\d+)?|(?:0?[1-9]|1\d|2\d|3[0-1])(?:,(?:0?[1-9]|1\d|2\d|3[0-1]))*|(?:0?[1-9]|1\d|2\d|3[0-1])-(?:0?[1-9]|1\d|2\d|3[0-1])(?:\/\d+)?) (?:\*(?:\/\d+)?|(?:0?[1-9]|1[0-2])(?:,(?:0?[1-9]|1[0-2]))*|(?:0?[1-9]|1[0-2])-(?:0?[1-9]|1[0-2])(?:\/\d+)?|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC) (?:\*(?:\/\d+)?|0?[0-6](?:,0?[0-6])*|0?[0-6]-0?[0-6](?:\/\d+)?|SUN|MON|TUE|WED|THU|FRI|SAT)$/i', $cronExp)) {
  37. exit(0);
  38. } else {
  39. exit(1);
  40. }
  41. }
  42. }