📄 apr::pool.3
字号:
.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05).\".\" Standard preamble:.\" ========================================================================.de Sh \" Subsection heading.br.if t .Sp.ne 5.PP\fB\\$1\fR.PP...de Sp \" Vertical space (when we can't use .PP).if t .sp .5v.if n .sp...de Vb \" Begin verbatim text.ft CW.nf.ne \\$1...de Ve \" End verbatim text.ft R.fi...\" Set up some character translations and predefined strings. \*(-- will.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left.\" double quote, and \*(R" will give a right double quote. \*(C+ will.\" give a nicer C++. Capital omega is used to do unbreakable dashes and.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,.\" nothing in troff, for use with C<>..tr \(*W-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'.ie n \{\. ds -- \(*W-. ds PI pi. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch. ds L" "". ds R" "". ds C` "". ds C' ""'br\}.el\{\. ds -- \|\(em\|. ds PI \(*p. ds L" ``. ds R" '''br\}.\".\" Escape single quotes in literal strings from groff's Unicode transform..ie \n(.g .ds Aq \(aq.el .ds Aq '.\".\" If the F register is turned on, we'll generate index entries on stderr for.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index.\" entries marked with X<> in POD. Of course, you'll have to process the.\" output yourself in some meaningful fashion..ie \nF \{\. de IX. tm Index:\\$1\t\\n%\t"\\$2"... nr % 0. rr F.\}.el \{\. de IX...\}.\".\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2)..\" Fear. Run. Save yourself. No user-serviceable parts.. \" fudge factors for nroff and troff.if n \{\. ds #H 0. ds #V .8m. ds #F .3m. ds #[ \f1. ds #] \fP.\}.if t \{\. ds #H ((1u-(\\\\n(.fu%2u))*.13m). ds #V .6m. ds #F 0. ds #[ \&. ds #] \&.\}. \" simple accents for nroff and troff.if n \{\. ds ' \&. ds ` \&. ds ^ \&. ds , \&. ds ~ ~. ds /.\}.if t \{\. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u". ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'.\}. \" troff and (daisy-wheel) nroff accents.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'.ds 8 \h'\*(#H'\(*b\h'-\*(#H'.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#].ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#].ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#].ds ae a\h'-(\w'a'u*4/10)'e.ds Ae A\h'-(\w'A'u*4/10)'E. \" corrections for vroff.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'. \" for low resolution devices (crt and lpr).if \n(.H>23 .if \n(.V>19 \\{\. ds : e. ds 8 ss. ds o a. ds d- d\h'-1'\(ga. ds D- D\h'-1'\(hy. ds th \o'bp'. ds Th \o'LP'. ds ae ae. ds Ae AE.\}.rm #[ #] #H #V #F C.\" ========================================================================.\".IX Title "mod_perl-2.0.2::docs::api::APR::Pool 3".TH mod_perl-2.0.2::docs::api::APR::Pool 3 "2005-10-21" "perl v5.10.0" "User Contributed Perl Documentation".\" For nroff, turn off justification. Always turn off hyphenation; it makes.\" way too many mistakes in technical documents..if n .ad l.nh.SH "NAME"APR::Pool \- Perl API for APR pools.SH "Synopsis".IX Header "Synopsis".Vb 1\& use APR::Pool ();\& \& my $sp = $r\->pool\->new;\& my $sp2 = APR::Pool\->new;\& \& # $sp3 is a subpool of $sp,\& # which in turn is a subpool of $r\->pool\& $sp3 = $sp\->new;\& print \*(Aq$r\->pool is an ancestor of $sp3\*(Aq\& if $r\->pool\->is_ancestor($sp3);\& # but sp2 is not a sub\-pool of $r\->pool\& print \*(Aq$r\->pool is not an ancestor of $sp2\*(Aq\& unless $r\->pool\->is_ancestor($sp2);\& \& # $sp4 and $sp are the same pool (though you can\*(Aqt\& # compare the handle as variables)\& my $sp4 = $sp3\->parent_get;\& \&\& # register a dummy cleanup function\& # that just prints the passed args\& $sp\->cleanup_register(sub { print @{ $_[0] || [] } }, [1..3]);\& \& # tag the pool\& $sp\->tag("My very best pool");\& \& # clear the pool\& $sp\->clear();\& \& # destroy sub pool\& $sp2\->destroy;.Ve.SH "Description".IX Header "Description"\&\f(CW\*(C`APR::Pool\*(C'\fR provides an access to \s-1APR\s0 pools, which are used for aneasy memory management..PPDifferent pools have different life scopes and therefore one doesn'tneed to free allocated memory explicitly, but instead it's done whenthe pool's life is getting to an end. For example a request pool iscreated at the beginning of a request and destroyed at the end of it,and all the memory allocated during the request processing using therequest pool is freed at once at the end of the request..PPMost of the time you will just pass various pool objects to themethods that require them. And you must understand the scoping of thepools, since if you pass a long lived server pool to a method thatneeds the memory only for a short scoped request, you are going toleak memory. A request pool should be used in such a case. And viceversa, if you need to allocate some memory for a scope longer than asingle request, then a request pool is inappropriate, since when therequest will be over, the memory will be freed and bad things mayhappen..PPIf you need to create a new pool, you can always do that via the\&\f(CW\*(C`new()\*(C'\fR method..SH "API".IX Header "API"\&\f(CW\*(C`APR::Pool\*(C'\fR provides the following functions and/or methods:.ie n .Sh """cleanup_register""".el .Sh "\f(CWcleanup_register\fP".IX Subsection "cleanup_register"Register cleanup callback to run.PP.Vb 2\& $pool\->cleanup_register($callback);\& $pool\->cleanup_register($callback, $arg);.Ve.ie n .IP "obj: $pool\fR ( \f(CW""APR::Pool object"" )" 4.el .IP "obj: \f(CW$pool\fR ( \f(CWAPR::Pool object\fR )" 4.IX Item "obj: $pool ( APR::Pool object )"The pool object to register the cleanup callback for.ie n .IP "arg1: $callback ( \s-1CODE\s0 ref or sub name )" 4.el .IP "arg1: \f(CW$callback\fR ( \s-1CODE\s0 ref or sub name )" 4.IX Item "arg1: $callback ( CODE ref or sub name )"a cleanup callback \s-1CODE\s0 reference or just a name of the subroutine(fully qualified unless defined in the current package)..ie n .IP "opt arg2: $arg ( \s-1SCALAR\s0 )" 4.el .IP "opt arg2: \f(CW$arg\fR ( \s-1SCALAR\s0 )" 4.IX Item "opt arg2: $arg ( SCALAR )"If this optional argument is passed, the \f(CW$callback\fR function willreceive it as the first and only argument when executed..SpTo pass more than one argument, use an \s-1ARRAY\s0 or a \s-1HASH\s0 reference.IP "ret: no return value" 4.IX Item "ret: no return value".PD 0.IP "excpt:" 4.IX Item "excpt:".PDif the registered callback fails, it happens when the pool isdestroyed. The destruction is performed by Apache and it ignores anyfailures. Even if it didn't ignore the failures, most of the time thepool is destroyed when a request or connection handlers are long gone.However the error \fBis\fR logged to \fIerror_log\fR, so if you monitor thatfile you will spot if there are any problems with it..IP "since: 2.0.00" 4.IX Item "since: 2.0.00".PP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -