1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
|
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision: 328550 $ -->
<refentry xml:id="mongocursor.slaveokay" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>MongoCursor::slaveOkay</refname>
<refpurpose>Sets whether this query can be done on a secondary</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>MongoCursor</type><methodname>MongoCursor::slaveOkay</methodname>
<methodparam choice="opt"><type>bool</type><parameter>okay</parameter><initializer>true</initializer></methodparam>
</methodsynopsis>
<para>
Calling this will make the driver route reads to secondaries if:
<itemizedlist>
<listitem>
<simpara>
You are using a replica set and
</simpara>
</listitem>
<listitem>
<simpara>
You created a <classname>MongoClient</classname> instance using the option
<literal>"replicaSet" => "setName" and</literal>
</simpara>
</listitem>
<listitem>
<simpara>
There is a healthy secondary that can be reached by the driver.
</simpara>
</listitem>
</itemizedlist>
You can check which server was used for this query by calling
<function>MongoCursor::info</function> after running the query. It's
<literal>server</literal> field will show which server the query was sent to.
</para>
<para>
Note that you should use this function even if you do not use the automatic
routing to secondaries. If you connect directly to a secondary in a replica
set, you still need to call this function, which basically tells the database
that you are aware that you might be getting older data and you're okay with
that. If you do not call this, you'll get "not master" errors when you try to
query.
</para>
<para>
This method will override the static class variable
<varname>MongoCursor::$slaveOkay</varname>. It will also override
<function>Mongo::setSlaveOkay</function>,
<function>MongoDB::setSlaveOkay</function> and
<function>MongoCollection::setSlaveOkay</function>.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term>
<parameter>okay</parameter>
</term>
<listitem>
<para>
If it is okay to query the secondary.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Returns this cursor.
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<para>
Throws <classname>MongoCursorException</classname> if this cursor has started iterating.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<example>
<title><function>MongoCursor::slaveOkay</function> example</title>
<programlisting role="php">
<![CDATA[
<?php
MongoCursor::$slaveOkay = false;
// cannot query secondary
$cursor = $collection->find();
// can query secondary
$cursor = $collection->find()->slaveOkay();
MongoCursor::$slaveOkay = true;
// can query secondary
$cursor = $collection->find();
// cannot query secondary
$cursor = $collection->find()->slaveOkay(false);
?>
]]>
</programlisting>
</example>
</refsect1>
<refsect1 role="seealso"><!-- {{{ -->
&reftitle.seealso;
<simplelist>
<member><xref linkend="mongo.readpreferences" /></member>
<member><methodname>MongoCursor::setReadPreference</methodname></member>
<member><methodname>MongoCursor::getReadPreference</methodname></member>
</simplelist>
</refsect1><!-- }}} -->
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
|