Skip to content

Commit

Permalink
Merge pull request #53 from Firesphere/master
Browse files Browse the repository at this point in the history
[FIX] Deprecation warnings and slightly more complete docker
  • Loading branch information
hatamiarash7 authored Nov 2, 2024
2 parents d972d5a + 4954300 commit d4e98c5
Show file tree
Hide file tree
Showing 3 changed files with 94 additions and 53 deletions.
18 changes: 15 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,14 +1,26 @@
FROM php:8.3-apache

RUN apt-get update && apt-get install --no-install-recommends -y \
libfreetype6-dev \
libmcrypt-dev \
libonig-dev
COPY --from=mlocati/php-extension-installer /usr/bin/install-php-extensions /usr/bin/install-php-extensions
RUN apt-get update && apt-get install --no-install-recommends -y \
libfreetype6-dev \
libmcrypt-dev \
libonig-dev \
&& docker-php-ext-configure gd \
&& docker-php-ext-install -j$(nproc) gd \
&& docker-php-source delete \
&& rm -rf /var/lib/apt/lists/*

# Install default PHP Extensions
RUN install-php-extensions \
memcached \
memcache \
gd \
opcache

RUN rm -rf /var/lib/apt/lists/*
RUN rm -rf /var/cache/apt

COPY /app /var/www/html
COPY /apache/vhost.conf /etc/apache2/sites-available/000-default.conf

Expand Down
125 changes: 75 additions & 50 deletions app/Library/Data/Analysis.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ public static function merge($array, $stats)
$array[$key] = $value;
}
}

return $array;
}

Expand All @@ -52,7 +53,7 @@ public static function diff($array, $stats)

# Diff for each key
foreach ($stats as $key => $value) {
if (isset($array[$key])) {
if (isset($array[$key]) && is_numeric($array[$key])) {
$stats[$key] = $value - $array[$key];
}
}
Expand All @@ -69,80 +70,80 @@ public static function diff($array, $stats)
*/
public static function stats($stats)
{
if (!is_array($stats) || (count($stats) == 0)) {
if (!is_array($stats) || (count($stats) === 0)) {
return false;
}

# Command set()
$stats['set_rate'] = ($stats['cmd_set'] == 0) ? '0.0' : sprintf('%.1f', $stats['cmd_set'] / $stats['uptime'], 1);
$stats['set_rate'] = ($stats['cmd_set'] === 0) ? '0.0' : sprintf('%.1f', $stats['cmd_set'] / $stats['uptime']);

# Command get()
$stats['get_hits_percent'] = ($stats['cmd_get'] == 0) ? ' - ' : sprintf('%.1f', $stats['get_hits'] / $stats['cmd_get'] * 100, 1);
$stats['get_misses_percent'] = ($stats['cmd_get'] == 0) ? ' - ' : sprintf('%.1f', $stats['get_misses'] / $stats['cmd_get'] * 100, 1);
$stats['get_rate'] = ($stats['cmd_get'] == 0) ? '0.0' : sprintf('%.1f', $stats['cmd_get'] / $stats['uptime'], 1);
$stats['get_hits_percent'] = ($stats['cmd_get'] === 0) ? ' - ' : sprintf('%.1f', $stats['get_hits'] / $stats['cmd_get'] * 100);
$stats['get_misses_percent'] = ($stats['cmd_get'] === 0) ? ' - ' : sprintf('%.1f', $stats['get_misses'] / $stats['cmd_get'] * 100);
$stats['get_rate'] = ($stats['cmd_get'] === 0) ? '0.0' : sprintf('%.1f', $stats['cmd_get'] / $stats['uptime']);

# Command delete(), version > 1.2.X
if (isset($stats['delete_hits'], $stats['delete_misses'])) {
$stats['cmd_delete'] = $stats['delete_hits'] + $stats['delete_misses'];
$stats['delete_hits_percent'] = ($stats['cmd_delete'] == 0) ? ' - ' : sprintf('%.1f', $stats['delete_hits'] / $stats['cmd_delete'] * 100, 1);
$stats['delete_misses_percent'] = ($stats['cmd_delete'] == 0) ? ' - ' : sprintf('%.1f', $stats['delete_misses'] / $stats['cmd_delete'] * 100, 1);
$stats['cmd_delete'] = $stats['delete_hits'] + $stats['delete_misses'];
$stats['delete_hits_percent'] = ($stats['cmd_delete'] === 0) ? ' - ' : sprintf('%.1f', $stats['delete_hits'] / $stats['cmd_delete'] * 100);
$stats['delete_misses_percent'] = ($stats['cmd_delete'] === 0) ? ' - ' : sprintf('%.1f', $stats['delete_misses'] / $stats['cmd_delete'] * 100);
} else {
$stats['cmd_delete'] = 0;
$stats['delete_hits_percent'] = ' - ';
$stats['cmd_delete'] = 0;
$stats['delete_hits_percent'] = ' - ';
$stats['delete_misses_percent'] = ' - ';
}
$stats['delete_rate'] = ($stats['cmd_delete'] == 0) ? '0.0' : sprintf('%.1f', $stats['cmd_delete'] / $stats['uptime'], 1);
$stats['delete_rate'] = ($stats['cmd_delete'] === 0) ? '0.0' : sprintf('%.1f', $stats['cmd_delete'] / $stats['uptime']);

# Command cas(), version > 1.2.X
if (isset($stats['cas_hits'], $stats['cas_misses'], $stats['cas_badval'])) {
$stats['cmd_cas'] = $stats['cas_hits'] + $stats['cas_misses'] + $stats['cas_badval'];
$stats['cas_hits_percent'] = ($stats['cmd_cas'] == 0) ? ' - ' : sprintf('%.1f', $stats['cas_hits'] / $stats['cmd_cas'] * 100, 1);
$stats['cas_misses_percent'] = ($stats['cmd_cas'] == 0) ? ' - ' : sprintf('%.1f', $stats['cas_misses'] / $stats['cmd_cas'] * 100, 1);
$stats['cas_badval_percent'] = ($stats['cmd_cas'] == 0) ? ' - ' : sprintf('%.1f', $stats['cas_badval'] / $stats['cmd_cas'] * 100, 1);
$stats['cmd_cas'] = $stats['cas_hits'] + $stats['cas_misses'] + $stats['cas_badval'];
$stats['cas_hits_percent'] = ($stats['cmd_cas'] === 0) ? ' - ' : sprintf('%.1f', $stats['cas_hits'] / $stats['cmd_cas'] * 100);
$stats['cas_misses_percent'] = ($stats['cmd_cas'] === 0) ? ' - ' : sprintf('%.1f', $stats['cas_misses'] / $stats['cmd_cas'] * 100);
$stats['cas_badval_percent'] = ($stats['cmd_cas'] === 0) ? ' - ' : sprintf('%.1f', $stats['cas_badval'] / $stats['cmd_cas'] * 100);
} else {
$stats['cmd_cas'] = 0;
$stats['cas_hits_percent'] = ' - ';
$stats['cmd_cas'] = 0;
$stats['cas_hits_percent'] = ' - ';
$stats['cas_misses_percent'] = ' - ';
$stats['cas_badval_percent'] = ' - ';
}
$stats['cas_rate'] = ($stats['cmd_cas'] == 0) ? '0.0' : sprintf('%.1f', $stats['cmd_cas'] / $stats['uptime'], 1);
$stats['cas_rate'] = ($stats['cmd_cas'] === 0) ? '0.0' : sprintf('%.1f', $stats['cmd_cas'] / $stats['uptime']);

# Command increment(), version > 1.2.X
if (isset($stats['incr_hits'], $stats['incr_misses'])) {
$stats['cmd_incr'] = $stats['incr_hits'] + $stats['incr_misses'];
$stats['incr_hits_percent'] = ($stats['cmd_incr'] == 0) ? ' - ' : sprintf('%.1f', $stats['incr_hits'] / $stats['cmd_incr'] * 100, 1);
$stats['incr_misses_percent'] = ($stats['cmd_incr'] == 0) ? ' - ' : sprintf('%.1f', $stats['incr_misses'] / $stats['cmd_incr'] * 100, 1);
$stats['cmd_incr'] = $stats['incr_hits'] + $stats['incr_misses'];
$stats['incr_hits_percent'] = ($stats['cmd_incr'] === 0) ? ' - ' : sprintf('%.1f', $stats['incr_hits'] / $stats['cmd_incr'] * 100);
$stats['incr_misses_percent'] = ($stats['cmd_incr'] === 0) ? ' - ' : sprintf('%.1f', $stats['incr_misses'] / $stats['cmd_incr'] * 100);
} else {
$stats['cmd_incr'] = 0;
$stats['incr_hits_percent'] = ' - ';
$stats['cmd_incr'] = 0;
$stats['incr_hits_percent'] = ' - ';
$stats['incr_misses_percent'] = ' - ';

}
$stats['incr_rate'] = ($stats['cmd_incr'] == 0) ? '0.0' : sprintf('%.1f', $stats['cmd_incr'] / $stats['uptime'], 1);
$stats['incr_rate'] = ($stats['cmd_incr'] === 0) ? '0.0' : sprintf('%.1f', $stats['cmd_incr'] / $stats['uptime']);

# Command decrement(), version > 1.2.X
if (isset($stats['decr_hits'], $stats['decr_misses'])) {
$stats['cmd_decr'] = $stats['decr_hits'] + $stats['decr_misses'];
$stats['decr_hits_percent'] = ($stats['cmd_decr'] == 0) ? ' - ' : sprintf('%.1f', $stats['decr_hits'] / $stats['cmd_decr'] * 100, 1);
$stats['decr_misses_percent'] = ($stats['cmd_decr'] == 0) ? ' - ' : sprintf('%.1f', $stats['decr_misses'] / $stats['cmd_decr'] * 100, 1);
$stats['cmd_decr'] = $stats['decr_hits'] + $stats['decr_misses'];
$stats['decr_hits_percent'] = ($stats['cmd_decr'] === 0) ? ' - ' : sprintf('%.1f', $stats['decr_hits'] / $stats['cmd_decr'] * 100);
$stats['decr_misses_percent'] = ($stats['cmd_decr'] === 0) ? ' - ' : sprintf('%.1f', $stats['decr_misses'] / $stats['cmd_decr'] * 100);
} else {
$stats['cmd_decr'] = 0;
$stats['decr_hits_percent'] = ' - ';
$stats['cmd_decr'] = 0;
$stats['decr_hits_percent'] = ' - ';
$stats['decr_misses_percent'] = ' - ';
}
$stats['decr_rate'] = ($stats['cmd_decr'] == 0) ? '0.0' : sprintf('%.1f', $stats['cmd_decr'] / $stats['uptime'], 1);
$stats['decr_rate'] = ($stats['cmd_decr'] === 0) ? '0.0' : sprintf('%.1f', $stats['cmd_decr'] / $stats['uptime']);

# Command decrement(), version > 1.4.7
if (isset($stats['touch_hits'], $stats['touch_misses'])) {
$stats['cmd_touch'] = $stats['touch_hits'] + $stats['touch_misses'];
$stats['touch_hits_percent'] = ($stats['cmd_touch'] == 0) ? ' - ' : sprintf('%.1f', $stats['touch_hits'] / $stats['cmd_touch'] * 100, 1);
$stats['touch_misses_percent'] = ($stats['cmd_touch'] == 0) ? ' - ' : sprintf('%.1f', $stats['touch_misses'] / $stats['cmd_touch'] * 100, 1);
$stats['cmd_touch'] = $stats['touch_hits'] + $stats['touch_misses'];
$stats['touch_hits_percent'] = ($stats['cmd_touch'] === 0) ? ' - ' : sprintf('%.1f', $stats['touch_hits'] / $stats['cmd_touch'] * 100);
$stats['touch_misses_percent'] = ($stats['cmd_touch'] === 0) ? ' - ' : sprintf('%.1f', $stats['touch_misses'] / $stats['cmd_touch'] * 100);
} else {
$stats['cmd_touch'] = 0;
$stats['touch_hits_percent'] = ' - ';
$stats['cmd_touch'] = 0;
$stats['touch_hits_percent'] = ' - ';
$stats['touch_misses_percent'] = ' - ';
}
$stats['touch_rate'] = ($stats['cmd_touch'] == 0) ? '0.0' : sprintf('%.1f', $stats['cmd_touch'] / $stats['uptime'], 1);
$stats['touch_rate'] = ($stats['cmd_touch'] === 0) ? '0.0' : sprintf('%.1f', $stats['cmd_touch'] / $stats['uptime']);

# Total hit & miss
#$stats['cmd_total'] = $stats['cmd_get'] + $stats['cmd_set'] + $stats['cmd_delete'] + $stats['cmd_cas'] + $stats['cmd_incr'] + $stats['cmd_decr'];
Expand All @@ -151,22 +152,22 @@ public static function stats($stats)

# Command flush_all
if (isset($stats['cmd_flush'])) {
$stats['flush_rate'] = ($stats['cmd_flush'] == 0) ? '0.0' : sprintf('%.1f', $stats['cmd_flush'] / $stats['uptime'], 1);
$stats['flush_rate'] = ($stats['cmd_flush'] === 0) ? '0.0' : sprintf('%.1f', $stats['cmd_flush'] / $stats['uptime']);
} else {
$stats['flush_rate'] = '0.0';
}

# Cache size
$stats['bytes_percent'] = ($stats['limit_maxbytes'] == 0) ? '0.0' : sprintf('%.1f', $stats['bytes'] / $stats['limit_maxbytes'] * 100, 1);
$stats['bytes_percent'] = ($stats['limit_maxbytes'] === 0) ? '0.0' : sprintf('%.1f', $stats['bytes'] / $stats['limit_maxbytes'] * 100);

# Request rate
$stats['request_rate'] = sprintf('%.1f', ($stats['cmd_get'] + $stats['cmd_set'] + $stats['cmd_delete'] + $stats['cmd_cas'] + $stats['cmd_incr'] + $stats['cmd_decr']) / $stats['uptime'], 1);
$stats['hit_rate'] = sprintf('%.1f', ($stats['get_hits']) / $stats['uptime'], 1);
$stats['miss_rate'] = sprintf('%.1f', ($stats['get_misses']) / $stats['uptime'], 1);
$stats['request_rate'] = sprintf('%.1f', ($stats['cmd_get'] + $stats['cmd_set'] + $stats['cmd_delete'] + $stats['cmd_cas'] + $stats['cmd_incr'] + $stats['cmd_decr']) / $stats['uptime']);
$stats['hit_rate'] = sprintf('%.1f', ($stats['get_hits']) / $stats['uptime']);
$stats['miss_rate'] = sprintf('%.1f', ($stats['get_misses']) / $stats['uptime']);

# Eviction & reclaimed rate
$stats['eviction_rate'] = ($stats['evictions'] == 0) ? '0.0' : sprintf('%.1f', $stats['evictions'] / $stats['uptime'], 1);
$stats['reclaimed_rate'] = (!isset($stats['reclaimed']) || ($stats['reclaimed'] == 0)) ? '0.0' : sprintf('%.1f', $stats['reclaimed'] / $stats['uptime'], 1);
$stats['eviction_rate'] = ($stats['evictions'] === 0) ? '0.0' : sprintf('%.1f', $stats['evictions'] / $stats['uptime']);
$stats['reclaimed_rate'] = (!isset($stats['reclaimed']) || ($stats['reclaimed'] === 0)) ? '0.0' : sprintf('%.1f', $stats['reclaimed'] / $stats['uptime']);

return $stats;
}
Expand All @@ -181,7 +182,7 @@ public static function stats($stats)
public static function slabs($slabs)
{
# Initializing Used Slabs
$slabs['used_slabs'] = 0;
$slabs['used_slabs'] = 0;
$slabs['total_wasted'] = 0;

# Request Rate par Slabs
Expand All @@ -192,8 +193,27 @@ public static function slabs($slabs)
if ($slab['used_chunks'] > 0) {
$slabs['used_slabs']++;
}
$slabs[$id]['request_rate'] = sprintf('%.1f', ($slab['get_hits'] + $slab['cmd_set'] + $slab['delete_hits'] + $slab['cas_hits'] + $slab['cas_badval'] + $slab['incr_hits'] + $slab['decr_hits']) / $slabs['uptime'], 1);
$slabs[$id]['mem_wasted'] = (($slab['total_chunks'] * $slab['chunk_size']) < $slab['mem_requested']) ? (($slab['total_chunks'] - $slab['used_chunks']) * $slab['chunk_size']) : (($slab['total_chunks'] * $slab['chunk_size']) - $slab['mem_requested']);
$slapSumKeys = [
'get_hits',
'cmd_set',
'delete_hits',
'cas_hits',
'cas_badval',
'incr_hits',
'decr_hits',
];
$slabSum = 0;
foreach ($slapSumKeys as $slabKey) {
$slabSum += (isset($slab[$slabKey]) ? $slab[$slabKey] : 0);
}
$slabs[$id]['request_rate'] = sprintf(
'%.1f',
($slabSum / $slabs['uptime']));
$slab['mem_requested'] = isset($slab['mem_requested']) ? $slab['mem_requested'] : 0;
$slabs[$id]['mem_wasted'] = (
($slab['total_chunks'] * $slab['chunk_size']) < $slab['mem_requested']) ?
(($slab['total_chunks'] - $slab['used_chunks']) * $slab['chunk_size']) :
(($slab['total_chunks'] * $slab['chunk_size']) - $slab['mem_requested']);
$slabs['total_wasted'] += $slabs[$id]['mem_wasted'];
}
}
Expand All @@ -216,14 +236,16 @@ public static function slabs($slabs)
public static function uptime($uptime)
{
if ($uptime > 0) {
$days = floor($uptime / 60 / 60 / 24);
$days = floor($uptime / 60 / 60 / 24);
$hours = $uptime / 60 / 60 % 24;
$mins = $uptime / 60 % 60;
if (($days + $hours + $mins) == 0) {
$mins = $uptime / 60 % 60;
if (($days + $hours + $mins) === 0) {
return ' less than 1 min';
}

return $days . ' days ' . $hours . ' hrs ' . $mins . ' min';
}

return ' - ';
}

Expand All @@ -246,6 +268,7 @@ public static function byteResize($value)
}
$value /= 1024;
}

return sprintf('%.1f %s', $value, $unit);
}

Expand All @@ -268,6 +291,7 @@ public static function valueResize($value)
}
$value /= 1000;
}

return sprintf('%.1f%s', $value, $unit);
}

Expand All @@ -290,6 +314,7 @@ public static function hitResize($value)
}
$value /= 1000;
}

return sprintf('%.0f%s', $value, $unit);
}
}
4 changes: 4 additions & 0 deletions captain-definition
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"schemaVersion" :2,
"dockerfilePath": "./Dockerfile"
}

0 comments on commit d4e98c5

Please sign in to comment.