Jon Anderson wrote:
> Just replying to the list on this one 'cause I'm pretty sure you're on
> it. :-)
>
> AFAIK, with many caches the web server cache and CLI caches are
> exclusive to each process. The APC manual seems to suggest that the CLI
> cache is not connected to the web server cache:
>
> From: http://ca.php.net/manual/en/ref.apc.php
>
> apc.enable_cli *integer*
> <http://ca.php.net/manual/en/language.types.integer.php>
>
> Mostly for testing and debugging. Setting this enables APC for the
> CLI version of PHP. Normally you wouldn't want to create, populate
> and tear down the APC cache on every CLI request, but for various
> test scenarios it is handy to be able to enable APC for the CLI
> version of APC easily.
thanks, you are right - what I thought had been working all this time had not,
or atleast the code did work but it was clearing the cache belonging to the CLI,
which was a pointless act!
I'm an idiot.
but wanting to clear the webservers APC cache from a cmdline script doesn't seem
like such a stupid thing to want to do. but there is no nice way of doing it;
so now
I do this at the end of my cmdline script instead:
exec('apachectl -k graceful');
which sucks in so many ways it hurts .... but it does clear the APC cache :-/
>
>
>
> jon
>
> Jochem Maas wrote:
>> hi people,
>>
>> PHP version: 5.1.1 (last built: Dec 28 2005 16:03:22)
>> APC version: 3.8.10
>> Apache version: 2.0.54 (last built: Dec 29 2005 14:04:16)
>> OS: debian
>>
>> I have a script that runs via the cmdline, it's used to import/update
>> data
>> in a database, after the script is run the APC cache needs to be
>> cleared so that
>> that the new/updated data is visible on the website. to do this I call
>> a static
>> method of my cache management class which effectively performs the
>> following:
>>
>> apc_clear_cache();
>> apc_clear_cache("user");
>>
>> this used to work, but now it does not (atleast not on the cmdline;
>> calling the
>> above mentioned method via a webrequest still works). I have not
>> recently updated
>> php, apc or apache, neither have made any changes to the php.ini
>> configuration.
>> someone else may have updated the OS/system (and I can't rule out that .
>>
>> to test the problem I ran the following code at the cmdline:
>>
>> # php -r 'var_dump( ini_get("apc.enable_cli"),
>> apc_clear_cache(),
>> apc_clear_cache("user") );'
>>
>> this is the output I get:
>>
>> string(1) "1"
>> NULL
>> bool(true)
>>
>> so apc is enabled for the cli, cache clearance seems to work but when
>> I checking the output
>> of the apc.php file (shipped with the apc package) I see that nothing
>> has been cleared; performing
>> the same apc_clear_cache() calls (by way of pressing the buttons on
>> the page output by apc.php) via
>> the webserver module *does* clear the cache.
>>
>> it seems all of a sudden that the CLI and then apache SAPI are looking
>> at different caches -
>> running apc_cache_info() && apc_sma_info() on the commandline show
>> nothing in the cache whereas
>> viewing the stats produced by apc.php (via the webserver) shows plenty
>> of stuff in the cache (both
>> before and after running apc_cache_info() && apc_sma_info() on the
>> commandline)
>>
>> can anyone offer some help/idea/etc?
>>
>>
>> Another Thing:
>> ===========================================================================
>>
>> although the manual states that apc_clear_cache() should always return
>> a boolean
>> calling it calling the function without any args *always* returns
>> NULL. can anyone say whether
>> this is a bug or a documentation problem?
>>
>>
>> My APC ini settings (as defined in a seperate apc.ini):
>> ===========================================================================
>>
>>
>>
>> ; Enable APC extension module
>> extension = apc.so
>>
>> [APC]
>> apc.enabled = 1
>> apc.shm_segments = 2
>> apc.shm_size = 128
>> apc.optimization = 0
>> apc.num_files_hint = 2000 ; ?
>> apc.ttl = 180
>> apc.gc_ttl = 0
>> apc.slam_defense = 0
>> apc.file_update_protection = 0 ; 1
>> apc.cache_by_default = 1
>> apc.enable_cli = 1
>> apc.filters = -.*\.class\.php
>>
>> ; +\.tpl\.php,+.*\.interface\.php,+.*\.funcs\.php
>> ; +.*\.class\.php
>>
>> ;apc.max_file_size = 8M
>> apc.user_entries_hint = 0
>> apc.user_ttl = 0
>>
>> ; this fixes a bug that causes $_SERVER not to be defined on
>> 2nd/subsequent requests
>> auto_globals_jit = Off
>>
>>
>
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php