phplint icon indicating copy to clipboard operation
phplint copied to clipboard

Linting the very same file in different file-system locations should re-use a single cache file

Open staabm opened this issue 6 months ago • 0 comments

in our concrete case the file-cache is taking a lot of space, because our file-structure in the filesystem has a incrementing counter:

complexit@ci24:/www/www/apps/motiontm$ tree -L 2
.
├── current -> releases/38
├── releases
│   ├── 3118
│   ├── 3119
│   ├── 3120
│   ├── 3121
│   ├── 3122
│   ├── 3228
│   ├── 3229
│   ├── 3230
│   ├── 3231
│   ├── 3232
│   ├── 34
│   ├── 35
│   ├── 36
│   ├── 37
│   └── 38
└── shared

19 directories, 0 files

this means the folders under the numbered folders contain mostly the same files. its a rolling release, meaning the webserver is using a symlink "current" and we build the app in parallel to production and only switch the symlink after the deployment finished (its a common pattern).

this means e.g. the following paths

app/releases/3118/test.php
app/releases/3119/test.php
app/releases/3120/test.php

are very likely the very same files.

if I read the cache files correctly, I think this means the current file-cache will have a single cache file for every file in our scenario (as the cache file contains the absolute file-system path). wouldn't it be possible instead to use a content hash of the file, so we can re-use a single cache file for all identical copies of a single .php file? this would save a lot of file space in the cache directory and it would also lead to a higher cache hit rate, which makes it more efficient

tested on phplint 9.5.6 and PHP 8.3

extracted from a different thread: https://github.com/overtrue/phplint/issues/218#issuecomment-2777874291

staabm avatar Apr 10 '25 15:04 staabm