Re: [APC-DEV] apc_delete_file() ?

[email protected] ("David Sklar") Tue, 27 May 2008 11:31:09 -0400
Newsgroups php.apc.dev
Message-ID <[email protected]>
Any thoughts on this patch and/or its likelihood of making it into the
next APC release?

David

On Tue, May 20, 2008 at 1:57 PM, David Sklar <[email protected]> wrote:
> A tarball of an initial implementation is up at
> http://www.sklar.com/files/apc_cache_delete.tar.gz
>
> (Seems lists.php.net qmail gets grumpy with messages > 30k)
>
> In the tarball, apc_cache_delete.diff is a diff against latest CVS;
> full copies of the
> modified files (php_apc.c, apc_cache.{ch}) are also included as well
> as some tests.
>
> The new user-level-function is apc_delete_files(). You pass it a
> delete-spec and an optional spec type that controls how the
> delete-spec is used, e.g.:
>
> apc_delete_files('/some/path/to/file.php', APC_DELETE_PATH);
> apc_delete_files('/some/path/to/file.php'); // no spec == exact path match
> apc_delete_files('/some/string/prefix/for/path', APC_DELETE_PREFIX);
> apc_delete_files('/some/glob/expr?ssion.*', APC_DELETE_GLOB);
> apc_delete_files('@^/usr(/local)?/php/@', APC_DELETE_REGEX);
>
> I suppose a nice enhancement would be to allow the first argument be
> an array as you suggest below.
>
> David
>
> On Wed, May 14, 2008 at 5:04 PM, shire <[email protected]> wrote:
>>
>> Hey David,
>>
>> It's been on my list to code up a file removal function that can be accessed
>> from user space ( I haven't started so you've got my vote on this if you
>> want patch something up....).
>>
>> I'm also going to need to add a utility to grab both functions and user
>> variables via a regex function more effectively (I want to start on that
>> today) so I'd probably use the two functions in conjunction if I wanted to
>> do a regex delete, and make the argument to the delete function a string or
>> optional array so it's more flexible (ie: if you already have a list of
>> functions as an array).  I'm thinking though that searching would be most
>> easily implemented based upon prefixes rather than more complicated regex
>> expressions (falling back to a slower regex comparison would be possible),
>> does this fit your use case(s) as well?
>>
>> These two options may work well for another task I need which is removing
>> groupings of files that could be considered "packages".  But ideally if one
>> file was removed due to a TTL timeout etc, all it's sibling files would go
>> to, which I'm not sure yet how I see being implemented in a generic/flexible
>> way.
>>
>> -shire
>>
>> On May 14, 2008, at 8:39 AM, David Sklar wrote:
>>
>>> I'd like to add a function that removes a specific compiled file from
>>> the cache. My initial thought is to have the function, given a
>>> filename:
>>>
>>> - use apc_cache_make_file_key() to determine the cache key for the
>>> filename
>>> - use apc_cache_find_slot() to determine the slot for the cache key
>>> - call remove_slot() on the slot to either free it immediately or put
>>> it on the deleted list if its refcount is > 0
>>> - and optionally have the function call process_pending_removals() to
>>> flush the deleted list (if possible)
>>>
>>> Another possibility, more useful for bulk deletes (at least on
>>> fullpath entries) could be something like apc_delete_file($pattern)
>>> which deletes all files whose names match a given pattern.  This could
>>> work internally like apc_cache_clear() except that before calling
>>> remove_slot() on  a particular slot, it would compare the pattern to
>>> the fullpath in the key and only remove if it matches.
>>>
>>> Do either/both of these approachese sound reasonable? Something
>>> obvious I'm missing?
>>>
>>> Thanks,
>>> David
>>>
>>> --
>>> APC Development Mailing List (http://pecl.php.net/APC)
>>> To unsubscribe, visit: http://www.php.net/unsub.php
>>
>>
>