Refine PHP Fatal Error Counting (#51363)

* Refine PHP Fatal Error Counting in MC Stat

* Add changelog

* Fix import
This commit is contained in:
Chi-Hsuan Huang 2024-09-17 22:31:44 +08:00 committed by GitHub
parent bd1bbfd63c
commit dee8c619f0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 27 additions and 7 deletions

View File

@ -0,0 +1,4 @@
Significance: patch
Type: enhancement
Refine PHP Fatal Error Counting in MC Stat

View File

@ -27,7 +27,6 @@ use Automattic\WooCommerce\Internal\Traits\AccessiblePrivateMethods;
use Automattic\WooCommerce\Internal\Utilities\LegacyRestApiStub; use Automattic\WooCommerce\Internal\Utilities\LegacyRestApiStub;
use Automattic\WooCommerce\Internal\Utilities\WebhookUtil; use Automattic\WooCommerce\Internal\Utilities\WebhookUtil;
use Automattic\WooCommerce\Internal\Admin\Marketplace; use Automattic\WooCommerce\Internal\Admin\Marketplace;
use Automattic\WooCommerce\Internal\McStats;
use Automattic\WooCommerce\Proxies\LegacyProxy; use Automattic\WooCommerce\Proxies\LegacyProxy;
use Automattic\WooCommerce\Utilities\{LoggingUtil, RestApiUtil, TimeUtil}; use Automattic\WooCommerce\Utilities\{LoggingUtil, RestApiUtil, TimeUtil};
use Automattic\WooCommerce\Internal\Logging\RemoteLogger; use Automattic\WooCommerce\Internal\Logging\RemoteLogger;
@ -407,12 +406,6 @@ final class WooCommerce {
$context $context
); );
// Record fatal error stats.
$container = wc_get_container();
$mc_stats = $container->get( McStats::class );
$mc_stats->add( 'error', 'fatal-errors-during-shutdown' );
$mc_stats->do_server_side_stats();
/** /**
* Action triggered when there are errors during shutdown. * Action triggered when there are errors during shutdown.
* *

View File

@ -5,6 +5,7 @@ namespace Automattic\WooCommerce\Internal\Logging;
use Automattic\WooCommerce\Utilities\FeaturesUtil; use Automattic\WooCommerce\Utilities\FeaturesUtil;
use Automattic\WooCommerce\Utilities\StringUtil; use Automattic\WooCommerce\Utilities\StringUtil;
use Automattic\WooCommerce\Internal\McStats;
use WC_Rate_Limiter; use WC_Rate_Limiter;
use WC_Log_Levels; use WC_Log_Levels;
@ -178,6 +179,15 @@ class RemoteLogger extends \WC_Log_Handler {
return false; return false;
} }
try {
// Record fatal error stats.
$mc_stats = wc_get_container()->get( McStats::class );
$mc_stats->add( 'error', 'critical-errors' );
$mc_stats->do_server_side_stats();
} catch ( \Throwable $e ) {
error_log( 'Warning: Failed to record fatal error stats: ' . $e->getMessage() ); // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log
}
if ( WC_Rate_Limiter::retried_too_soon( self::RATE_LIMIT_ID ) ) { if ( WC_Rate_Limiter::retried_too_soon( self::RATE_LIMIT_ID ) ) {
error_log( 'Remote logging throttled.' ); // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log error_log( 'Remote logging throttled.' ); // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log
return false; return false;

View File

@ -60,4 +60,17 @@ class McStats extends A8c_Mc_Stats {
return parent::do_server_side_stat( $url ); return parent::do_server_side_stat( $url );
} }
/**
* Pings the stats server for the current stats and empty the stored stats from the object
*
* @return void
*/
public function do_server_side_stats() {
if ( ! \WC_Site_Tracking::is_tracking_enabled() ) {
return;
}
parent::do_server_side_stats();
}
} }