<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<refentry xml:id="function.mysql-pconnect" xmlns="http://docbook.org/ns/docbook">
 <refnamediv>
  <refname>mysql_pconnect</refname>
  <refpurpose>Open a persistent connection to a MySQL server</refpurpose>
 </refnamediv>

 <refsynopsisdiv>
  <warning>
   &mysql.alternative.note;
   <simplelist role="alternatives">
    <member><function>mysqli_connect</function> with <literal>p:</literal> host prefix</member>
    <member><methodname>PDO::__construct</methodname> with <constant>PDO::ATTR_PERSISTENT</constant> as a driver option</member>
   </simplelist>
  </warning>
 </refsynopsisdiv>

 <refsect1 role="description">
  &reftitle.description;
  <methodsynopsis>
   <type>resource</type><methodname>mysql_pconnect</methodname>
   <methodparam choice="opt"><type>string</type><parameter>server</parameter><initializer>ini_get("mysql.default_host")</initializer></methodparam>
   <methodparam choice="opt"><type>string</type><parameter>username</parameter><initializer>ini_get("mysql.default_user")</initializer></methodparam>
   <methodparam choice="opt"><type>string</type><parameter>password</parameter><initializer>ini_get("mysql.default_password")</initializer></methodparam>
   <methodparam choice="opt"><type>int</type><parameter>client_flags</parameter><initializer>0</initializer></methodparam>
  </methodsynopsis>
  <!-- Undocumented confusing syntax:
  <methodsynopsis>
   <type>resource</type><methodname>mysql_pconnect</methodname>
   <methodparam choice="opt"><type>string</type><parameter>server</parameter></methodparam>
   <methodparam choice="opt"><type>string</type><parameter>username</parameter></methodparam>
   <methodparam choice="opt"><type>string</type><parameter>password</parameter></methodparam>
   <methodparam choice="opt"><type>bool</type><parameter>new_link</parameter></methodparam>
   <methodparam choice="opt"><type>int</type><parameter>client_flags</parameter></methodparam>
  </methodsynopsis>
  -->
  <para>
   Establishes a persistent connection to a MySQL server.
  </para>
  <!-- TODO: Integrate this information more nicely with features.persistent -->
  <para>
   <function>mysql_pconnect</function> acts very much like
   <function>mysql_connect</function> with two major differences.
  </para>
  <para>
   First, when connecting, the function would first try to find a
   (persistent) link that's already open with the same host,
   username and password.  If one is found, an identifier for it
   will be returned instead of opening a new connection.
  </para>
  <para>
   Second, the connection to the SQL server will not be closed when
   the execution of the script ends.  Instead, the link will remain
   open for future use (<function>mysql_close</function> will not
   close links established by <function>mysql_pconnect</function>).
  </para>
  <para>
   This type of link is therefore called 'persistent'.
  </para>
 </refsect1>

 <refsect1 role="parameters">
  &reftitle.parameters;
  <para>
   <variablelist>
    <varlistentry>
     <term><parameter>server</parameter></term>
     <listitem>
      <para>
       The MySQL server. It can also include a port number. e.g. 
       "hostname:port" or a path to a local socket e.g. ":/path/to/socket" for 
       the localhost.
      </para>
      <para>
       If the PHP directive <link linkend="ini.mysql.default-host">
       mysql.default_host</link> is undefined (default), then the default 
       value is 'localhost:3306'
      </para>
     </listitem>
    </varlistentry>
    <varlistentry>
     <term><parameter>username</parameter></term>
     <listitem>
      <para>
       The username. Default value is the name of the user that owns the
       server process.
      </para>
     </listitem>
    </varlistentry>
    <varlistentry>
     <term><parameter>password</parameter></term>
     <listitem>
      <para>
       The password. Default value is an empty password.
      </para>
     </listitem>
    </varlistentry>
    <varlistentry>
     <term><parameter>client_flags</parameter></term>
     <listitem>
      <para>
       The <parameter>client_flags</parameter> parameter can be a combination 
       of the following constants:
       128 (enable <literal>LOAD DATA LOCAL</literal> handling),
       <constant>MYSQL_CLIENT_SSL</constant>, 
       <constant>MYSQL_CLIENT_COMPRESS</constant>, 
       <constant>MYSQL_CLIENT_IGNORE_SPACE</constant> or
       <constant>MYSQL_CLIENT_INTERACTIVE</constant>.
      </para>
     </listitem>
    </varlistentry> 
   </variablelist>
  </para>
 </refsect1>

 <refsect1 role="returnvalues">
  &reftitle.returnvalues;
  <para>
   Returns a MySQL persistent link identifier on success, or &false; on 
   failure.
  </para>
 </refsect1>

 <refsect1 role="notes">
  &reftitle.notes;
  <note>
   <para>
    Note, that these kind of links only work if you are using
    a module version of PHP. See the
    <link linkend="features.persistent-connections">Persistent
    Database Connections</link> section for more information.
   </para>
  </note>
  <warning>
   <para>
    Using persistent connections can require a bit of tuning of your Apache
    and MySQL configurations to ensure that you do not exceed the number of
    connections allowed by MySQL.
   </para>
  </warning>
 </refsect1>

 <refsect1 role="seealso">
  &reftitle.seealso;
  <para>
   <simplelist>
    <member><function>mysql_connect</function></member>
    <member><link linkend="features.persistent-connections">Persistent
    Database Connections</link></member>
   </simplelist>
  </para>
 </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
indent-tabs-mode:nil
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
-->
