OPcache Clear - Deployment Pipeline
Vorwort
Der PHP-Prozess des Webservers unterscheidet sich von dem PHP-Prozess der CLI Umgebung. Angesichts dessen ist es nicht möglich, dass der PHP OPcache via CLI geleert werden kann.
Clear-Script-Bereitstellung
Folgendes PHP-Script muss im Document-Root-Verzeichnis der Shopware 6 Applikation bereitgestellt werden:
Beispiel Pfad:
/var/www/creoline-demo.com/releases/current/public/opcache.php opcache.php
<?php
$allowList = [
'127.0.0.1',
'10.20.0.1',
'10.20.0.2',
'10.20.0.3',
'10.20.0.4',
];
header('Content-Type: text/plain');
if(!in_array($_SERVER['REMOTE_ADDR'], $allowList)) {
http_response_code(403);
echo "The ip {$_SERVER['REMOTE_ADDR']} is not allowed to execute this script.\n";
return;
}
$status = opcache_get_status(false);
if(!$status['opcache_enabled']) {
http_response_code(400);
echo "OPcache is not enabled.\n";
return;
}
$memoryUsed = round($status['memory_usage']['used_memory'] / 1024 / 1024);
$memoryFree = round($status['memory_usage']['free_memory'] / 1024 / 1024);
if(opcache_reset()) {
http_response_code(200);
echo "OpCache has been cleared successfully. Used memory: {$memoryUsed} MiB - Free memory: {$memoryFree} MiB\n";
} else {
http_response_code(400);
echo "OpCache could not be cleared.\n";
} Die IP-Adressen in AllowList müssen an die VPC-IP-Adressen der App-Server angepasst werden.
Deployment Integration
Im letzten Schritt, nachdem Symlink-Flip, muss das Script von jedem App-Server wie folgt aufgerufen werden:
curl -k --fail-with-body --retry 3 --retry-all-errors http://127.0.0.1/opcache.php -H "Host: www.creoline-demo.com" Der Host-Header muss auf die entsprechende Domain, die in der NGINX Vhost Config angegeben ist, angepasst werden. Sofern keine Domain angegeben wurde, kannd er Host Header entfallen.
Fehlerbehandlung
Success
- cURL Exitcode:
0 - Der OPcache wurde erfolgreich geleert
Error
- cURL Exitcode:
22 - Der OPcache konnte auch nach 3 Versuchen nicht geleert werden. Fehleranalyse siehe HTTP-Body.
Ähnliche Artikel
War diese Seite hilfreich?