| @@ -312,9 +312,9 @@ | ||
| 312 | 312 | $key |
| 313 | 313 | ); |
| 314 | 314 | // @codingStandardsIgnoreEnd |
| 315 | 315 | |
| 316 | - $queue = $lasso_db->get_var( $sql ); // ? We want to track SQL errors in Sentry | |
| 316 | + $queue = $lasso_db->get_var( $sql ); // ? SQL errors surfaced via log_error() -> trigger_error() | |
| 317 | 317 | $count = 0; |
| 318 | 318 | $unserialized_queue = maybe_unserialize( $queue ); |
| 319 | 319 | if ( is_array( $unserialized_queue ) ) { |
| 320 | 320 | $count = count( $unserialized_queue ); |
| @@ -514,8 +514,31 @@ | ||
| 514 | 514 | $lasso_db->remove_all_lasso_processes(); |
| 515 | 515 | } |
| 516 | 516 | |
| 517 | 517 | /** |
| 518 | + * Log once when a configured background process class is missing. | |
| 519 | + * | |
| 520 | + * @param mixed $process_class Process class name from filter/map. | |
| 521 | + */ | |
| 522 | + private static function log_missing_process_class_once( $process_class ) { | |
| 523 | + $class_label = is_string( $process_class ) ? $process_class : wp_json_encode( $process_class ); | |
| 524 | + static $logged_this_request = array(); | |
| 525 | + if ( isset( $logged_this_request[ $class_label ] ) ) { | |
| 526 | + return; | |
| 527 | + } | |
| 528 | + $logged_this_request[ $class_label ] = true; | |
| 529 | + | |
| 530 | + $log_key = 'lasso_lite_missing_proc_' . md5( $class_label ); | |
| 531 | + if ( get_option( $log_key ) ) { | |
| 532 | + return; | |
| 533 | + } | |
| 534 | + update_option( $log_key, 1, false ); | |
| 535 | + | |
| 536 | + // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log | |
| 537 | + error_log( 'Lasso Lite: skipping missing background process class ' . $class_label ); | |
| 538 | + } | |
| 539 | + | |
| 540 | + /** | |
| 518 | 541 | * Get Background Process is running |
| 519 | 542 | */ |
| 520 | 543 | public function get_list_background_processing() { |
| 521 | 544 | $result = array( |
| @@ -527,8 +550,12 @@ | ||
| 527 | 550 | $process_classes = Lasso_Verbiage::PROCESS_DESCRIPTION; |
| 528 | 551 | $process_classes = apply_filters( 'lasso_lite_all_processes', $process_classes ); |
| 529 | 552 | |
| 530 | 553 | foreach ( $process_classes as $process_class => $process_name ) { |
| 554 | + if ( ! is_string( $process_class ) || ! class_exists( $process_class ) ) { | |
| 555 | + self::log_missing_process_class_once( $process_class ); | |
| 556 | + continue; | |
| 557 | + } | |
| 531 | 558 | /** @var Process $process_class_obj */ // phpcs:ignore |
| 532 | 559 | $process_class_obj = new $process_class(); |
| 533 | 560 | $process_next_schedule = $process_class_obj->next_schedule(); |
| 534 | 561 | |