mezzio / mezzio-fastroute

FastRoute integration for Mezzio
https://docs.mezzio.dev/mezzio/features/router/fast-route/
BSD 3-Clause "New" or "Revised" License
16 stars 11 forks source link

`FastRouteRouter#getCacheFile` to provide cache location #13

Open boesing opened 2 years ago

boesing commented 2 years ago

Feature Request

Q A
New Feature yes
BC Break no

Summary

I am writing a command with laminas-cli in our project to remove cache files. There is actually no way of receiving the default cache location of the FastRouteRouter. The only thing I can do as of now is to pass the config file path by myself but it would be quite helpful if this would be provided by this component.

Another idea could be a mezzio/mezzio command to flush the configuration cache. Sadly, the config cache path is not passed to the config itself by default and thus, its not that easy. However, together with the command-chain feature of laminas-cli, a generic command to flush all application caches could be provided as well, but this is not feasible as of now.

lcobucci commented 2 years ago

@boesing we must consider opcache in this context.

Also, when designing the new API for the caching for fastroute v2 I've thought about exposing a method for cache invalidation but didn't get to implement it yet.

Maybe this is the kind of thing that we should solve on the upstream package?

geerteltink commented 2 years ago

I'm not sure I understand the need for this. You can set the location of the config file:

    'router' => [
        'fastroute' => [
             // Enable caching support:
            'cache_enabled' => true,
             // Optional (but recommended) cache file path:
            'cache_file'    => 'data/cache/fastroute.php.cache',
        ],
    ],

Once you stored it in the configuration you can retrieve it and delete it inside a cli command. The default location is also known as it is hardcoded. So basically in your cli command you can check if one of the files exist and remove it.

boesing commented 2 years ago

@geerteltink Yes, I could pass it via config and read it from config. Thats exactly what I am doing as of now. But since the cache_file is not a required option, it can also be missing from the config and thus, the default property value from the FastRouteRouter would be used. There is no way of getting that value.

@lcobucci TBH; I have a very strange use-case for removing the cache file and thus, I don't think that its worth to have something implemented from this library. I would be fine with deleting it by myself but if you want to add that feature, I would probably use it.