mò ,á¸Ec@s`dZddd!ZdkZdkZdklZdklZdfd„ƒYZeeƒdS( s›Cache management support. This class is mixed into the database manager in App.ApplicationManager. $Id: CacheManager.py 40300 2005-11-21 16:54:03Z efge $s$Revision: 1.31 $i iþÿÿÿN(sInitializeClass(sDateTimet CacheManagercBsXtZdZdZdZdZeideƒƒZ eideƒƒZ ei deƒƒZ ei deƒƒZ ei deƒƒZd„Zd „Zd „Zd „Zd „Zd „Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zded„Zed„Zed„Z d„Z!d„Z"ed„Z#ed„Z$RS(sCache management mix-in i<isdtml/cacheParameterss dtml/cacheGCswww/transparent_bar.gifswww/store_bar.gifswww/load_bar.gifcCs |iiƒS(N(tselft_p_jartdb(R((t//data/zmath/zope/lib/python/App/CacheManager.pyt_getDB)scCs|iiƒotptS(N(RRt getVersiontTruetFalse(R((Rt _inVersion,scCs|iƒiƒS(N(RRt cacheSize(R((Rt cache_length/scCs|iƒiƒS(N(RRtcacheDetailSize(R((Rtcache_detail_length2scCs|iƒiƒS(N(RRt objectCount(R((Rt database_size5scCs#|iƒo |iSn|iSdS(N(RR t _vcache_aget _cache_age(R((Rt cache_age8s  cCs}|iƒ}|iƒo||_|i|ƒn||_|i|ƒ|dj o#|d}|i |ddƒndS(s set cache agetRESPONSEtURL1s/manage_cacheParametersN( RRRR tvalueRtsetVersionCacheDeactivateAfterRtsetCacheDeactivateAftertREQUESTtNonetresponsetredirect(RRRRR((Rtmanage_cache_age>s       cCs5|iƒ}|iƒo|iƒSn |iƒSdS(N(RRRR tgetVersionCacheSizet getCacheSize(RR((Rt cache_sizeLs  cCsk|iƒ}|iƒo|i|ƒn|i|ƒ|dj o#|d}|i |ddƒndS(sset cache sizeRRs/manage_cacheParametersN( RRRR tsetVersionCacheSizeRt setCacheSizeRRRR(RRRRR((Rtmanage_cache_sizeSs     cCstiiiidS(Nf60.0(tGlobalstBobobaset_jartcachetcache_mean_age(R((RR'ascCstiiiidS(Ni<(R#R$R%R&tcache_mean_deal(R((RR(escCstiiiidS(Ni<(R#R$R%R&tcache_mean_deac(R((RR)iscCs(tiiii}titi|ƒƒS(N( R#R$R%R&tcache_last_gc_timettttimetasctimet localtime(RR+((RR*mscCsM|iƒ}|i|ƒ|dj o#|d}|i|ddƒndS(s&Perform a full sweep through the cacheRRs/manage_cacheGCN( RRRtcacheFullSweepRRRRR(RRRRR((Rtmanage_full_sweepqs     icCsD|iƒiƒ|dj o#|d}|i|ddƒndS(s&Perform a full sweep through the cacheRRs/manage_cacheGCN(RRt cacheMinimizeRRRR(RRRR((Rtmanage_minimizezs   cCsW|iƒiƒ}|dj o0|iiddƒdit d„|ƒƒSn|SdS(sŒ Returns the name of the classes of the objects in the cache and the number of objects in the cache for each class. s Content-Types text/plains cCs|\}}d||fS(Ns%6d %s(tnametcount(t.0R3R4((RtŒsN( RRt cacheDetailtdetailRRRt setHeadertjointmap(RRR8((Rt cache_detailƒs c Cs|iƒiƒ}|dj oøtd„|ƒ}ddg}x³|D]«\}}|i ddƒ} | od| } nd} |d}|djo d }n|d jo d }nd }|id |d|d |d||d| fƒqDW|iiddƒdi|ƒSn|SdS(sE Returns information about each object in the cache. cCs|d|df|fS(Ntconn_notoid(tdict(R?((RR6™ssA# Table shows connection number, oid, refcount, state, and class.s,# States: L = loaded, G = ghost, C = changedtids (%s)ttstateitLitCtGs%d %-34s %6d %s %s%sR=R>trctklasss Content-Types text/plains N(RRtcacheExtremeDetailR8RRR;tlsttrestsortkeyR?tgetR@tidinfotsRBtappendRR9R:( RRRBRJR8RKRNRIR?RMR@((Rtcache_extreme_detail’s,          8cCsI|iƒ}t|dƒpdSn|iƒ}|djodSn|S(NtgetActivityMonitor(RRRthasattrRRQtam(RRSR((Rt_getActivityMonitor¶s   cCs+|iƒ}|djodSn|iƒS(Ni(RRTRSRtgetHistoryLength(RRS((RRU¿s  cCs|iƒ}t|ƒ}|djo td‚n|dj o|i|ƒn||_|dj o#|d}|i |ddƒndS(s;Change the length of the activity monitor history. islength can not be negativeRRs/manage_activityN( RRTRStinttlengtht ValueErrorRtsetHistoryLengtht_history_lengthRRR(RRWRRSR((Rtmanage_setHistoryLengthÅs        cCs\|iƒ}|d jod Sn|d j oat|iddƒƒ} t|iddƒƒ}t |iddƒƒ}|i | ||ƒ}n |i ƒ}d}d}d} d}g}xa|D]Y}||d}||d}| |d} |d|d}||jo |}qÀqÀW|o|dd |dd } nd} x†|D]~}|d}|djo!tt |||ƒd ƒ}nd}|d}|djo!tt |||ƒd ƒ}nd}|d |d d }| d jod|d }nE| djod|d}n&| d jod|}n d|}|ihd|<d|<dt|||dƒ<d|d<d|d<d|d<d |d <d |d <d|<ƒqOW|o8t|dd ƒiƒ} t|d d ƒiƒ} n d} d} hd| <d| <d|<d|<d|<d| <}|S(!s>Returns information for generating an activity chart. t chart_startit chart_endtchart_divisionsi tstorestloadst connectionstendtstartiiÿÿÿÿis%dhi<s%dms%dss%.2fst store_lentload_lent trans_lent store_countt load_countt time_offsetRAt start_timetend_timetdivsttotal_store_countttotal_load_countttotal_connectionsN(#RRTRSRRtfloatRLRcRbRVt divisionstgetActivityAnalysistanalysisRnRmRotlimitRltdivtsumt segment_timeR_tmaxtsegment_heightRdR`ReR+RiROtDateTimetaCommonZRjRkRJ(RRyRR_RSRnRdRbRJRcRwRkRjRoRlR`RqReRsRmRtR+RuRiRv((RtgetActivityChartDataÔsh       !  !    ‡ <(%t__name__t __module__t__doc__RRRZR#tDTMLFiletglobalstmanage_cacheParameterstmanage_cacheGCt ImageFilettransparent_bart store_bartload_barRR R R RRRRR"R'R(R)R*R0RR2R<RPRTRUR[R|(((RRs>                   $  (Rt __version__R,R#tInitializeClassRzR(R,R‰RzR#RRˆ((Rt?s     ÿ