@@ -917,14 +917,40 @@ public static function init(): void {
917917
918918 register_shutdown_function (function () {
919919 $ memoryPeak = memory_get_peak_usage ();
920- $ logLevel = match (true ) {
921- $ memoryPeak > 500_000_000 => ILogger::FATAL ,
922- $ memoryPeak > 400_000_000 => ILogger::ERROR ,
923- $ memoryPeak > 300_000_000 => ILogger::WARN ,
924- default => null ,
925- };
926- if ($ logLevel !== null ) {
920+
921+ // Use the memory helper to get the real memory limit in bytes
922+ try {
923+ $ memoryInfo = new \OC \MemoryInfo ();
924+ $ memoryLimit = $ memoryInfo ->getMemoryLimit ();
925+ } catch (Throwable $ e ) {
926+ $ memoryLimit = null ;
927+ }
928+
929+ // Check if a memory limit is configured and can be retrieved and determine log level
930+ if ($ memoryLimit !== null && $ memoryLimit !== -1 ) {
931+ $ logLevel = match (true ) {
932+ $ memoryPeak > $ memoryLimit * 0.9 => ILogger::FATAL ,
933+ $ memoryPeak > $ memoryLimit * 0.75 => ILogger::ERROR ,
934+ $ memoryPeak > $ memoryLimit * 0.5 => ILogger::WARN ,
935+ default => null ,
936+ };
937+
938+ $ memoryLimitIni = @ini_get ('memory_limit ' );
939+ $ message = 'Request used ' . Util::humanFileSize ($ memoryPeak ) . ' of memory. Memory limit: ' . ($ memoryLimitIni ?: 'unknown ' );
940+ } else {
941+ // Fall back to hardcoded thresholds if memory_limit cannot be determined
942+ $ logLevel = match (true ) {
943+ $ memoryPeak > 500_000_000 => ILogger::FATAL ,
944+ $ memoryPeak > 400_000_000 => ILogger::ERROR ,
945+ $ memoryPeak > 300_000_000 => ILogger::WARN ,
946+ default => null ,
947+ };
948+
927949 $ message = 'Request used more than 300 MB of RAM: ' . Util::humanFileSize ($ memoryPeak );
950+ }
951+
952+ // Log the message
953+ if ($ logLevel !== null ) {
928954 $ logger = Server::get (LoggerInterface::class);
929955 $ logger ->log ($ logLevel , $ message , ['app ' => 'core ' ]);
930956 }
0 commit comments