A clean and responsive interface for Zend OPcache information,

Overview

opcache-gui

A clean and responsive interface for Zend OPcache information, showing statistics, settings and cached files, and providing a real-time update for the information.

This interface uses ReactJS and Axios and is for modern browsers and requires a minimum of PHP 7.1.

License

MIT: http://acollington.mit-license.org/

Sponsoring this work

If you're able and would like to sponsor this work in some way, then feel free to do so through the GitHub Sponsorship page.

Alternatively, if you'd just like to give me a shout-out on Twitter to say you use it, that'd be awesome, too! (Any one else miss postcardware?)

Using the opcache-gui

Installing

There are two ways to getting started using this gui:

Copy/clone this repo

The easiest way to start using the opcache-gui is to clone this repo, or simply copy/paste/download the index.php file to a location which your web server can load. Then point your browser to that location, such as https://www.example.com/opcache/index.php.

Install via composer

You can include the files with Composer by running the command composer require amnuts/opcache-gui.

Once in your vendor directory, there are numerous ways in which you can use the interface. For example, if you're using a framework such as Symfony or Laravel, you could load opcache-gui into a Controller. Your requirements of setting it up within your framework of choice will vary, so it's not really possible to detail how to do that within this readme... but I have faith in your ability to figure it out!

The namespace used for the class is Amnuts\Opcache, so once the dependency is in your autoload.php you can use the \Amnuts\Opcache\Service class. For example, you could do something like:



use Amnuts\Opcache\Service;

// assuming location of: /var/www/html/opcache.php
require_once __DIR__ . '/../vendor/autoload.php';

// specify any options you want different from the defaults, if any
$options = [/* ... */];

// setup the class and pass in your options, if you have any
$opcache = (new Service($options))->handle();

Then you can create whatever view you want with which to show the opcache details. Although there is a pretty neat React-based interface available for you in this repo.

Alternatively, include vendor/amnuts/opcache-gui/index.php directly and this'll give you the same result as just copying/pasting the index.php somewhere.



// assuming location of: /var/www/html/opcache.php

require_once __DIR__ . '/../vendor/amnuts/opcache-gui/index.php';

You could even simply create a symlink to the index.php that's in the vendor directory:

ln -s /var/www/vendor/amnuts/opcache-gui/index.php /var/www/html/opcache.php

Basically, there are plenty of ways to get the interface up and running - pick whichever suits your needs.

Configuration

The default configuration for the interface looks like this:

$options = [
   'allow_filelist'   => true,          // show/hide the files tab
   'allow_invalidate' => true,          // give a link to invalidate files
   'allow_reset'      => true,          // give option to reset the whole cache
   'allow_realtime'   => true,          // give option to enable/disable real-time updates
   'refresh_time'     => 5,             // how often the data will refresh, in seconds
   'size_precision'   => 2,             // Digits after decimal point
   'size_space'       => false,         // have '1MB' or '1 MB' when showing sizes
   'charts'           => true,          // show gauge chart or just big numbers
   'debounce_rate'    => 250,           // milliseconds after key press to send keyup event when filtering
   'per_page'         => 200,           // How many results per page to show in the file list, false for no pagination
   'cookie_name'      => 'opcachegui',  // name of cookie
   'cookie_ttl'       => 365,           // days to store cookie
   'highlight'        => [
       'memory' => true,                // show the memory chart/big number
       'hits'   => true,                // show the hit rate chart/big number
       'keys'   => true,                // show the keys used chart/big number
       'jit'    => true                 // show the jit buffer chart/big number
   ]
];

If you want to change any of the defaults, you can pass in just the ones you want to change if you're happy to keep the rest as-is. Just alter the array at the top of the index.php script (or pass in the array differently to the Service class). For example, the following would change only the allow_reset and refresh_time values but keep everything else as the default:

$opcache = (new Service([
    'refresh_time' => 2,
    'allow_reset' => false
]))->handle();

Changing the look

The interface has been split up to allow you to easily change the colours of the gui, or even the core components, should you wish.

The CSS for the interface is in the build/_frontend/interface.scss file. If you want to change the interface itself, update the build/_frontend/interface.jsx file - it's basically a set of ReactJS components.

If you update those files, you will want to build the interface again and have the new jsx/css put into use. To do that, run the command php ./build/build.php from the repo root (you will need nodejs and npm installed). Once running, you should see the output:

🐢 Installing node modules
🏗️ Building js and css
🚀 Creating single build file
💯 Done!

The build script will only need to install the node_modules once, so on subsequent builds it should be a fair bit quicker!

The build process will create a compiled css file at build/interface.css and the javascript of the interface will be in build/interface.js. You could probably use both of these within your own frameworks and templating systems, should you wish.

The core PHP template used in the build process, and that acts to pass various bits of data to the ReactJS side of things, is located at build/template.phps. If you wanted to update the version of ReactJS used, or how the wrapper html is structured, then this would be the file you'd want to update.

The interface

Overview

The overview will show you all the core information. From here you'll be able to see what host and platform you're running on, what version of OPcache you're using, when it was last reset, the functions and directives available (with links to the php.net manual), and all the statistics associated with the OPcache (number of hits, memory used, free and wasted memory, and more).

Screenshot of the Overview tab

Cached files

All the files currently in the cache are listed here with their associated statistics.

You can filter the results to help find the particular scripts you're looking for and change the way cached files are sorted. From here you can invalidate the cache for individual files or invalidate the cache for all the files matching your search.

If you do not want to show the file list at all then you can use the allow_filelist configuration option; setting it to false will suppress the file list altogether.

If you want to adjust the pagination length you can do so with the per_page configuration option.

Screenshot of the Cached files list showing filtered results and pagination

Ignored files

If you have set up a list of files which you don't want cache by supplying an opcache.blacklist_filename value, then the list of files will be listed within this tab.

If you have not supplied that configuration option in the php.ini file then this tab will not be displayed. If you set the allow_filelist configuration option to false then this tab will not be displayed irrespective of your ini setting.

Preloaded files

PHP 7.4 introduced the ability to pre-load a set of files on server start by way of the opcache.preload setting in your php.ini file. If you have set that up then the list of files specifically pre-loaded will be listed within this tab.

As with the ignored file, if you have not supplied the ini setting, or the allow_filelist configuration option is false, then this tab will not be displayed.

Reset the cache

You can reset the whole cache as well as force individual files, or groups of files, to become invalidated so that they will be cached again.

Resetting can be disabled with the use of the configuration options allow_reset and allow_invalidate.

Real-time updates

The interface can poll every so often to get a fresh look at the opcache. You can change how often this happens with the configuration option refresh_time, which is in seconds.

When the real-time updates are active, the interface will automatically update all the values as needed.

Also, if you choose to invalidate any files or reset the cache it will do this without reloading the page, so the search term you've entered, or the page to which you've navigated do not get reset. If the real-time update is not on then the page will reload on any invalidation usage.

Releases

Version 3.3.1
Just a few minor tweaks:

  • Added more of an explanation to the JIT value
  • Replaced date functions with \DateTime and related classes
  • Updated README with troubleshooting and sponsorship info (and refined header levels)

Version 3.3.0
Mostly added JIT information for PHP 8:

  • Added JIT buffer graph (optionally able to turn it off)
  • Added JIT information to the memory usage panel
  • Improved the JIT information shown in the directives
  • Fixed a long outstanding interface bug that allowed you to see the 'invalidate all' link even if invalidation option was false

If you want to enable JIT you have to put in a value for the opcache.jit_buffer_size ini setting, else it's disabled by default.

If you're not using PHP 8, the interface will compensate and not show the additional JIT information.

Version 3.2.1
Minor maintenance release to:

  • Put back "spaceship operator" so PHP8 doesn't give deprecation warnings (must have been accidentally removed in a previous commit)
  • More refined axios usage when it comes to parameters
  • A little extra formatting on the opcache optimization levels

Version 3.2.0
Updated ReactJS to latest and used minified versions and made slight improvement to sort option when no pagination is present.

Version 3.1.0
Added the ability to sort the cached file list in a variety of ways.

Version 3.0.1
A minor update that will use http or https to get the javascript libraries, depending on what you're using.

Version 3.0.0
Although the interface looks mostly the same, it's had a complete re-write under the hood! Some of the more notable changes are:

  • New namespace for the base service class which ensure composer compatibility
  • You can now paginate the cached files list to make it easier to render a large file list
  • Any scripts that have been preloaded are displayed in a tab
  • Any file paths ignored are displayed in a tab
  • You can now invalidate all the files matching a search in one go
  • jQuery has been removed; the whole interface is now using ReactJS and more modern javascript (so only modern browsers)
  • The CSS is now using SASS and is now much easier to change all the colours of the interface as you wish
  • SVGs are now used for any icons or gauge graphs
  • A more responsive interface when the 'enable real-time' is activated
  • Build script added to compile the ReactJS and SASS and put them into the single, simple, gui script

Version 2.5.4
Refined placement of initial css namespace to play nicely within Moodle plugin and possibly other systems. Also tweaked some CSS.

Version 2.5.3
CSS class names have been added and style rules updated to use them.

Version 2.5.2
Hotfix for the optimisation_level values that was put out in v2.5.1.

Version 2.5.1
A couple bug fixes and improvement on the optimisation level details.

  • optimisation_level now shows the levels of optimisations that will be performed rather than an abstract number
  • Fixed issue #43
  • Fixed issue #44

Version 2.5.0
Added a new highlight chart to show the cached keys percentage with options to turn on/off the individual highlight graphs.

Version 2.4.1
Mostly bug fixes

  • memory_consumption and max_file_size config settings now display as human-readable sizes
  • four missing directives have been included
  • better handling if file_cache_only is active
  • cache-control header set to not cache the page

Version 2.4.0
Adds cookie store for the real-time state allowing real-time to be activated on load. Cookie name and TTL length can be adjusted in the config

Version 2.3.0
Adds information for interned strings and PHP 5.4 compatibility

Version 2.2.2
Brings in optimisations for the file listing when filtering

Version 2.2.1
Has the gauges now updating with the real-time pulse and a couple rounding issues fixed

Version 2.2.0
Provides the ability to turn on/off the file list (default is on)

Version 2.1.0
Now provides a much easier way to configure some options, be it the poll time, toggling the ability to reset the cache, real-time updates, etc. It also allows you to show the big values (memory usage and hit rate) as gauge graphs instead of big numbers.

Version 2.0.0
Introduces the use of React.js provides the ability to seamlessly update more of the information in real-time (well, every five seconds by default) - so now the files as well as the overview get refreshed. There is an updated look, removing the gradients and going for a flatter feel. And the code in general has had an overhaul.

Releases of the GUI are available at:

https://github.com/amnuts/opcache-gui/releases/

Making is compatible with PHP 7.0

The script requires PHP 7.1 or above. I'm not tempted to downgrade the code to make it compatible with version 7.0, and hopefully most people would have upgraded by now. But I really do appreciate that sometimes people just don't have the ability to change the version of PHP they use because it's out of their control. So if you're one of the unlucky ones, you can make the following changes to index.php (or Service.php and run the build script). For the lines:

public function getOption(?string $name = null)

public function getData(?string $section = null, ?string $property = null)

public function resetCache(?string $file = null): bool

It'll just be a case of removing the ? from each of the params.

Troubleshooting

Use of PHP-FPM

A number of people have questioned whether the opcache-gui is working on their instance of PHP-FPM, as the files shown don't appear to be everything that's cached, and that's different to what Apache might show.

Essentially, that's expected behaviour. And thanks to a great comment from contributor Michalng, this explanation should cover the difference:

The interface can only show what it knows about the OPcache usage of its own OPcache instance, hence when it's accessed through Apache with mod_php, then it can only see the OPcache usage of that Apache webserver OPcache instance. When it's accessed with classic CGI, it can only see itself being cached as a new PHP and OPcache instance is created, in which case OPcache itself often doesn't make sense.

To be able to monitor and manage the OPcache for all web applications, all need to use the same FastCGI, i.e. PHP-FPM instance.

In case of Apache, one then often needs to actively configure it to not use it's internal mod_php but send PHP handler requests to the shared PHP-FPM server via mod_proxy_fcgi, which also requires using the event MPM. That is generally seen as the preferred setup nowadays, especially for high traffic websites. This is because every single incoming request with MPM prefork + mod_php creates an own child process taking additional time and memory, while with event MPM and dedicated PHP-FPM server a (usually) already waiting handler thread is used on Apache and on PHP end, consuming nearly no additional memory or time for process spawning.

Comments
  • jit expansion

    jit expansion

    There are a few macros for opcache.git:

    • disable: Completely disabled, cannot be enabled at runtime. Equals to 0.
    • off: Disabled, but can be enabled at runtime. Equals to 0
    • tracing/on: Use tracing JIT. Enabled by default and recommended for most users: Equals to 1254
    • function: Use function JIT. Equals to 1205

    Would be nice if opcache-gui could expand any of these values showing also is description. For instance tracing will be:

    • 1: Enable use of AVX, if the CPU supports it (CPU-specific optimization)
    • 2: Perform global register allocation (Register allocation)
    • 5: Use tracing JIT. Profile on the fly and compile traces for hot code segments (Trigger)
    • 4: Use call graph
    enhancement 
    opened by javiergutierrezchamorro 13
  • CSS conflicting with Moodle themes

    CSS conflicting with Moodle themes

    Hi @amnuts ,

    Thank you for sharing this really useful tool with the global Moodle community.

    In case you were not aware, I would like to bring to your attention that when viewing Opcache management pages, some of its CSS appears to be affecting the theme. Some 3rd party themes are more affected than others. Here is an example where it is affecting the display of the Navigation Drawer. Here is a screenshot of how it is affecting the Navigation Drawer in Moodle 3.8.2 using the Boost theme:

    image

    Let me know if you have any questions or want me to review an updated version.

    Best regards,

    Michael Milette

    opened by michael-milette 10
  • what is the essence?

    what is the essence?

    Hi!

    Thank you very much for tool, which is real convenient in use. (sorry for my English...)

    For my website I have noticed very useful moment that if in the browser I switch on real-time update then files in a cache are saved long time and if no visitors some time a cache isn't nullified and php the code is always compiled.

    I have thought to make same effect through cron, however, as I can see, your script contains javascript that makes run on cron impossible...

    What is the essence of your script which can be started from php? (I watched your code and I did attempts to realize it, but I am not the real programmer)

    PS may be it will be interesting to expand possibilities of the script, having complemented it with the file which users can start on cron.

    Thanks in advance! Creative achievements!

    opened by bhaktadas 8
  • Undefined index: interned_strings_usage

    Undefined index: interned_strings_usage

    I just downloaded version 2.3.0 and when I access it, I get this error:

    Notice: Undefined index: interned_strings_usage in /home/xxxx/public_html/opcache-gui-2.3.0/index.php on line 190

    I have display_errors set to on and error_reporting is set to E_ALL in php. It seems that a check must first be done before accessing this attribute.

    bug 
    opened by lourdas 8
  • remove 'empty' get parameter

    remove 'empty' get parameter

    Axios sends GET parameters like reset in combination with axios.get('?') like this ?&reset=1, replacing ? with / fixes this behaviour and sends just ?reset=1

    opened by redshark1802 6
  • array_merge(): Argument #1 is not an array

    array_merge(): Argument #1 is not an array

    Hi.

    I currently experience the following error: Warning: array_merge(): Argument #1 is not an array in /homepages/[....]/opcache.php on line 198

    And no data is shown on the dashboard

    Any ideas?

    Kind regards, Andreas

    bug 
    opened by df1paw 6
  • Enable Realtime Update: Enhancement

    Enable Realtime Update: Enhancement

    Enable/Disable realtime update based on cookies, Set a client side cookie if Enable/Disable button clicked Then when next time opcache page is loaded auto Enable realtime update or Disable it with saved cookie This is a simple javascript implement if i am not wrong Thanks

    enhancement 
    opened by Niresh12495 6
  • Information when a file has been cached or modified in the cache

    Information when a file has been cached or modified in the cache

    Hello,

    first of all thank you very much for your tool. This is really useful!

    I'd like to ask if it would be possible to add a timestamp to every file in the cached file list with the information when the file has been cached or modified in the cache (because the file on disk changed). As far as I know, currently only the last use time is displayed in the GUI file list.

    If I remember right, the time of adding the file to the cache should be available via opcache_get_status(). The returned file list should include a key "timestamp" which contains the UNIX timestamp when that file was added to the cache.

    Could this information be added to opcache-gui?

    Thank you very much!

    Best regards, je-mos

    enhancement 
    opened by je-mos 5
  • PHPDocumentor generates 29 Docblock errors, which I'm happy to fix if you want them fixed :-)

    PHPDocumentor generates 29 Docblock errors, which I'm happy to fix if you want them fixed :-)

    If you run this code through PHPDocumentor, it generates 29 errors (which is a tiny number.)

    I'd be happy to "fix them" by adding comments to the code...

    ... but I only want to spend time on this if it's actually of interest and something you'd be happy to merge if I did...

    opened by yourpropertyexpert 5
  • Excessive load time, file usage tab

    Excessive load time, file usage tab

    Hello, when cache is empty or you have a few files the script is fast but if you have something like eg. used memory: 676.69MB number of cached files: 65,856

    it takes too much to load the page, even 2 minutes or more I didn't take a look at the code but in my opinion the issue is the number of files because you don't paginate and you load all the cached files references at once. File usage tab? So, it's really slow to invalidate a file in this situation. Can you fix it, please?

    Thanks

    opened by 7starsone 5
  • Add react *.js to the project, instad of load from external - CSP support

    Add react *.js to the project, instad of load from external - CSP support

    Hey, like your product much. I have server with CSP enabled and opcache UI will not be opened without whitelisting of unpkg.com. Is this possible to add js files to the project so that it will be loaded from the same FQDN as UI? Or is there is an easy way to re-configure it locally? grafik

    enhancement 
    opened by GAS85 4
  • https://unpkg.com down

    https://unpkg.com down

    Hello, at this time of writing the https://unpkg.com return Error code 520 on all script files, so we have a blank page. I've replaced all scripts call with those from https://cdnjs.cloudflare.com Like so: <script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.2.0/umd/react.production.min.js"> <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.2.0/umd/react-dom.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/axios/1.1.3/axios.min.js"></script>

    Pull request created #94

    opened by M-Falken 0
  • Seeing

    Seeing "has been invalidated" on every file

    I have the following opcache settings:

    opcache.enable=1
    opcache.validate_timestamps=0
    opcache.enable_file_override=1
    opcache.save_comments=0
    opcache.file_update_protection=0
    

    This is consistent with the stats I'm seeing:

    number of cached files: 20
    number of hits: 1,199,633
    number of misses: 20
    number of cached keys: 29
    

    However, in the "Cached" tab, I see "has been invalidated" on every entry:

    /srv/app/src/common.php
    hits: 29,977, memory: 62.95KB, last used: Thu, 15 Sep 2022 11:28:46 +0000 - has been invalidated
    

    Is that correct? My understanding is that all my files should never invalidate.

    Also, could anyone confirm that the "last used" date is the date of the last hit? the screenshot included in the readme confuses me a little bit, as it has a date from 1970:

    https://camo.githubusercontent.com/ceba44e11a4e8c494ccd65bb72669579e527ca115b1941153a052781c2cdc129/687474703a2f2f616d6e7574732e636f6d2f696d616765732f6f7063616368652f73637265656e73686f742f6361636865642d76332e706e67

    opened by pereorga 6
  • ./opcache-gui-3.3.0/index.php only shows itself as being cached, but no other files

    ./opcache-gui-3.3.0/index.php only shows itself as being cached, but no other files

    I downloaded version 3.3.0, copied all the files into a ./opcache-gui-3.3.0 subdirectory of my web application and then created a link to the ./opcache-gui-3.3.0/index.php file in the top folder of my web application.

    When pointing my browser to the ./opcache-gui-3.3.0/index.php file via that link everything seemed to work as expected, but then I noticed that it only shows a single file as being cached which is the ./opcache-gui-3.3.0/index.php file itself. None of the other application files are shown as being cached although I can see all the xyz.php.bin files in the opcache folder together with ./opcache-gui-3.3.0/index.php.bin.

    What am I missing here?

    opened by reteP-riS 5
  • OpCache guy does only show

    OpCache guy does only show

    Using the OpCache gui in Moodle I only can see very limited information/links on the screen instead of the nice information that you present on your site.

    Any idea why the details are missing for me?

    image
    opened by snack753 8
  • file_cache_only=1 improvements

    file_cache_only=1 improvements

    I am forced to use file_cache_only=1 due to PHP being run as FastCGI without any multi-process management such as (PHP-FPM). In other words no shared memory cache for me. It would be great if in this case your tool could show the files that have been cached on disk, how many these are, and allow invalidation/removal of individual files. I don't think there is a possibility to glean some cache stats like hits, etc., as is the case for the shared memory situation, but if there is those would be great.

    If anybody has an idea how to evaluate how well a file only opcache is working, I would love to hear ideas. All I can do right now is to check if opcode files are being written to disk. There is no information if they are actually being used or how often they have been used, etc.

    enhancement 
    opened by wasshuber 1
Releases(3.4.0)
  • 3.4.0(Aug 2, 2022)

    What's Changed

    The biggest change in this release is the ability to be able to rebuild the interface with a different language. Only English and French are supported right now, but hopefully there will be more contributors willing to do a language pack PR!

    Another change is the ability to build the interface with the required javascript libraries saved locally rather than accessed remotely. This'll be helpful if you have policies in place that don't allow certain remote files/urls.

    Along with that, you can now also configure the date/time format to your choosing, and the file's modified date/time has been added to the output in the file cache list.

    Thanks to @Stevemoretz for their contribution in fixing a potential CORS issues, and @bbalet for creating the French language pack.

    Full Changelog: https://github.com/amnuts/opcache-gui/compare/3.3.1...3.4.0

    Source code(tar.gz)
    Source code(zip)
  • 3.3.1(Jan 9, 2022)

    What's Changed

    • Improved advanced jit output by @amnuts in https://github.com/amnuts/opcache-gui/pull/80

    Full Changelog: https://github.com/amnuts/opcache-gui/compare/3.3.0...3.3.1

    Source code(tar.gz)
    Source code(zip)
  • 3.3.0(Jun 27, 2021)

    This release updates the interface to include information about the JIT usage, and also tidies up some small things.

    • Added JIT buffer graph (optionally able to turn it off)
    • Added JIT information to the memory usage panel
    • Improved the JIT information shown in the directives
    • Fixed a long outstanding interface bug that allowed you to see the 'invalidate all' link even if invalidation option was false
    • Various links updated to use https rather than http
    Source code(tar.gz)
    Source code(zip)
  • 3.2.1(Dec 16, 2020)

    This release includes the following changes:

    • Put back "spaceship operator" so PHP8 doesn't give deprecation warnings (must have been accidentally removed in a previous commit)
    • More refined axios usage when it comes to parameters
    • A little extra formatting on the opcache optimization levels
    Source code(tar.gz)
    Source code(zip)
  • 3.2.0(Dec 8, 2020)

    This release updates the React libraries so that they are the minified production versions and will also be the most current version available.

    Source code(tar.gz)
    Source code(zip)
  • 3.1.0(Nov 28, 2020)

  • 3.0.1(Sep 25, 2020)

    This release eases the protocols used when including the external javascript packages, so if you're using it on https then the js will be included via the https protocol, or via http if that's what you're using.

    Source code(tar.gz)
    Source code(zip)
  • 3.0.0(Sep 18, 2020)

    Version 3.0.0 of the GUI brings in a complete re-write aimed at modern browsers.

    Some of the notable changes are:

    • New namespace for the base service class which ensure composer compatibility
    • You can now paginate the cached files list to make it easier to render a large file list
    • Any scripts that have been preloaded are displayed in a tab
    • Any file paths ignored are displayed in a tab
    • You can now invalidate all the files matching a search in one go
    • jQuery has been removed; the whole interface is now using ReactJS and more modern javascript (so only modern browsers)
    • The CSS is now using SASS and is now much easier to change all the colours of the interface as you wish
    • SVGs are now used for any icons or gauge graphs
    • A more responsive interface when the 'enable real-time' is activated
    • Build script added to compile the ReactJS and SASS and put them into the single, simple, gui script
    Source code(tar.gz)
    Source code(zip)
  • 2.5.4(Apr 7, 2020)

    This release refines where the class namespace starts so that it plays nicely with the Moodle plugin that wraps this script. Also a CSS rule or two has been tweaked.

    Source code(tar.gz)
    Source code(zip)
  • v2.5.3(Apr 6, 2020)

    This release sees the CSS being updated to use class names rather than element names and hierarchy.

    This should mean it affects other areas of sites into which the opcache-gui may be integrated far less, and also paves the way for making it easier to theme in the future.

    Source code(tar.gz)
    Source code(zip)
  • v2.5.2(Feb 22, 2020)

  • v2.5.1(Feb 22, 2020)

    This release has the following:

    • The optimisation_level value now shows the levels of optimisations that will be performed rather than an abstract number which makes no sense to anyone
    • Fixed issue #43
    • Fixed issue #44
    • Fixed issue #45
    Source code(tar.gz)
    Source code(zip)
  • v2.5.0(Jul 13, 2019)

  • v2.4.1(Jul 12, 2019)

    A bit of a bug fix release which includes:

    • memory_consumption and max_file_size config settings now display as human-readable sizes
    • four missing directives have been included
    • better handling if file_cache_only is active
    • cache-control header set to not cache the page
    Source code(tar.gz)
    Source code(zip)
  • v2.4.0(Dec 28, 2017)

    Real-time state is now stored in a cookie so that it can automatically start on page load if you've previously set the state to be active.

    Source code(tar.gz)
    Source code(zip)
  • v2.3.0(Jun 27, 2017)

  • v2.2.4(Oct 11, 2016)

  • v2.2.2(Feb 24, 2016)

    This release brings in optimisations with the file filtering. It's now quicker to filter, recolour the rows, and there's a debounce in place so the keyup event (and so the filtering) isn't fired with every single key press.

    Source code(tar.gz)
    Source code(zip)
  • v2.2.1(Feb 10, 2016)

  • v2.2.0(Dec 30, 2015)

  • v2.1.0(May 8, 2015)

  • v2.0.1(Jan 29, 2015)

  • v2.0.0(Nov 26, 2014)

    This release comes with completely rewritten code, both on the PHP sides of things as well as the front-end.

    The PHP code is now much tidier and functionality contained within a class. The front-end is now partly driven by React.js to provide seamless auto-updates for more of the information (all of the stats and all of the files can now auto-update their details). The style of the gui has also undergone a little bit of a revamp.

    Source code(tar.gz)
    Source code(zip)
Owner
Andrew Collington
Hopefully a good dad, possibly a good husband, and a developer most of the rest of the time.
Andrew Collington
Zend Framework cache backend for MongoDB

Zend_Cache_Backend_Mongo Author: Anton Stöckl About Zend_Cache_Backend_Mongo is a Zend Framework Cache Backend for MongoDB. It supports tags and autoc

Anton Stöckl 12 Feb 19, 2020
A thin PSR-6 cache wrapper with a generic interface to various caching backends emphasising cache tagging and indexing.

Apix Cache, cache-tagging for PHP Apix Cache is a generic and thin cache wrapper with a PSR-6 interface to various caching backends and emphasising ca

Apix 111 Nov 26, 2022
DataLoaderPhp is a generic utility to be used as part of your application's data fetching layer to provide a simplified and consistent API over various remote data sources such as databases or web services via batching and caching.

DataLoaderPHP is a generic utility to be used as part of your application's data fetching layer to provide a simplified and consistent API over various remote data sources such as databases or web services via batching and caching.

Webedia - Overblog 185 Nov 3, 2022
PHP cache library, with adapters for e.g. Memcached, Redis, Couchbase, APC(u), SQL and additional capabilities (e.g. transactions, stampede protection) built on top.

Donate/Support: Documentation: https://www.scrapbook.cash - API reference: https://docs.scrapbook.cash Table of contents Installation & usage Adapters

Matthias Mullie 295 Nov 28, 2022
A flexible and feature-complete Redis client for PHP.

Predis A flexible and feature-complete Redis client for PHP 7.2 and newer. ATTENTION: you are on the README file of an unstable branch of Predis speci

Predis 7.3k Nov 29, 2022
Simple and swift MongoDB abstraction.

Monga A simple and swift MongoDB abstraction layer for PHP 5.4+ What's this all about? An easy API to get connections, databases and collections. A fi

The League of Extraordinary Packages 330 Nov 28, 2022
Boost the speed of Kirby by having content files of pages cached, with automatic unique ID, fast lookup and Tiny-URL.

?? Kirby3 Boost ⏱️ up to 3x faster content loading ?? fastest page lookup and resolution of relations Boost the speed of Kirby by having content files

Bruno Meilick 37 Nov 18, 2022
Caching implementation with a variety of storage options, as well as codified caching strategies for callbacks, classes, and output

laminas-cache Laminas\Cache provides a general cache system for PHP. The Laminas\Cache component is able to cache different patterns (class, object, o

Laminas Project 66 Nov 11, 2022
A simple cache library. Implements different adapters that you can use and change easily by a manager or similar.

Desarolla2 Cache A simple cache library, implementing the PSR-16 standard using immutable objects. Caching is typically used throughout an applicatito

Daniel González 129 Nov 20, 2022
A fast, light-weight proxy for memcached and redis

twemproxy (nutcracker) twemproxy (pronounced "two-em-proxy"), aka nutcracker is a fast and lightweight proxy for memcached and redis protocol. It was

Twitter 11.6k Dec 1, 2022
The cache component provides a Promise-based CacheInterface and an in-memory ArrayCache implementation of that

Cache Async, Promise-based cache interface for ReactPHP. The cache component provides a Promise-based CacheInterface and an in-memory ArrayCache imple

ReactPHP 329 Nov 21, 2022
Graphic stand-alone administration for memcached to monitor and debug purpose

PHPMemcachedAdmin Graphic stand-alone administration for memcached to monitor and debug purpose This program allows to see in real-time (top-like) or

Cyrille Mahieux 249 Nov 15, 2022
A library providing platform-specific user directory paths, such as config and cache

Phirs A library providing platform-specific user directory paths, such as config and cache. Inspired by dirs-rs.

Mohammad Amin Chitgarha 7 Mar 1, 2022
LaraCache is an ORM based package for Laravel to create, update and manage cache items based on model queries

LaraCache Using this package, you can cache your heavy and most used queries. All you have to do is to define the CacheEntity objects in the model and

Mostafa Zeinivand 200 Nov 16, 2022
A simple cache library. Implements different adapters that you can use and change easily by a manager or similar.

Desarolla2 Cache A simple cache library, implementing the PSR-16 standard using immutable objects. Caching is typically used throughout an applicatito

Daniel González 129 Nov 20, 2022
Zend\Text is a component to work on text strings from Zend Framework

zend-text Repository abandoned 2019-12-31 This repository has moved to laminas/laminas-text. Zend\Text is a component to work on text strings. It cont

Zend Framework 31 Jan 24, 2021
Michael Pratt 306 Nov 4, 2022
Documentation on clean coding and demonstration of studied clean coding principals with PHP.

practice-php-clean-code Documentation on clean coding and demonstration of studied clean coding principals with PHP. The document contained in this re

Ferdous Islam 1 Feb 21, 2022
CLI App and library to manage apc & opcache.

CacheTool - Manage cache in the CLI CacheTool allows you to work with APCu, OPcache, and the file status cache through the CLI. It will connect to a F

Samuel Gordalina 1.4k Nov 22, 2022
An OPCache Preloader for CakePHP 4.x applications

CakePHP Preloader An OPCache preloader for CakePHP. Reference: https://www.php.net/manual/en/opcache.preloading.php This package is meant to provide a

Chris Nizzardini 8 Jun 22, 2022