fix(autoloader): no apcu no side effects

apcu lead to side effects especially with app management and (soft)
inter-dependencies, and lead also to 500 server errors. While we could
add management to clear apcu cache in many cases (may stil leave edge
cases) the performance benefit is marginally as also class maps are
already cached in opcache. Hence, the simple and effective way to go is
to not use apcu for autoloading.

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
This commit is contained in:
Arthur Schiwon 2023-09-08 16:40:48 +02:00
parent 747d9ef511
commit 603a659a37
No known key found for this signature in database
GPG key ID: 7424F1874854DF23
2 changed files with 4 additions and 6 deletions

View file

@ -114,8 +114,6 @@ class OC {
public static string $configDir;
public static int $VERSION_MTIME = 0;
/**
* requested app
*/
@ -610,10 +608,9 @@ class OC {
self::$CLI = (php_sapi_name() == 'cli');
// Add default composer PSR-4 autoloader
// Add default composer PSR-4 autoloader, ensure apcu to be disabled
self::$composerAutoloader = require_once OC::$SERVERROOT . '/lib/composer/autoload.php';
OC::$VERSION_MTIME = filemtime(OC::$SERVERROOT . '/version.php');
self::$composerAutoloader->setApcuPrefix('composer_autoload_' . md5(OC::$SERVERROOT . '_' . OC::$VERSION_MTIME));
self::$composerAutoloader->setApcuPrefix(null);
try {
self::initPaths();

View file

@ -325,9 +325,10 @@ class OC_Util {
return;
}
$timestamp = filemtime(OC::$SERVERROOT . '/version.php');
require OC::$SERVERROOT . '/version.php';
/** @var int $timestamp */
self::$versionCache['OC_Version_Timestamp'] = \OC::$VERSION_MTIME;
self::$versionCache['OC_Version_Timestamp'] = $timestamp;
/** @var string $OC_Version */
self::$versionCache['OC_Version'] = $OC_Version;
/** @var string $OC_VersionString */