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

Reply via email to