php-doc-en/reference/zmq/zmqsocket/construct.xml

150 lines
4.2 KiB
XML
Raw Normal View History

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<refentry xml:id="zmqsocket.construct" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>ZMQSocket::__construct</refname>
<refpurpose>Construct a new ZMQSocket</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<methodname>ZMQSocket::__construct</methodname>
<methodparam><type>ZMQContext</type><parameter>context</parameter></methodparam>
<methodparam><type>int</type><parameter>type</parameter></methodparam>
<methodparam choice="opt"><type>string</type><parameter>persistent_id</parameter><initializer>null</initializer></methodparam>
<methodparam choice="opt"><type>callback</type><parameter>on_new_socket</parameter><initializer>null</initializer></methodparam>
</methodsynopsis>
<para>
Constructs a ZMQSocket object. <parameter>persistent_id</parameter> parameter can be used to allocated a persistent
socket. A persistent socket has to be allocated from a persistent context and it stays connected over multiple requests.
The <parameter>persistent_id</parameter> parameter can be used to recall the same socket over multiple requests. The
<parameter>on_new_socket</parameter> is called only when a new underlying socket structure is created.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>context</parameter></term>
<listitem>
<para>
ZMQContext object.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>type</parameter></term>
<listitem>
<para>
The socket type. See <constant>ZMQ::SOCKET_*</constant> constants.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>persistent_id</parameter></term>
<listitem>
<para>
If <parameter>persistent_id</parameter> is specified the socket will be persisted over multiple requests.
If <parameter>context</parameter> is not persistent the socket falls back to non-persistent mode.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>on_new_socket</parameter></term>
<listitem>
<para>
Callback function, which is executed when a new socket structure is created. This function does not get invoked
if the underlying persistent connection is re-used.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>A <function>ZMQSocket</function> example</title>
<para>
Using callback the bind/connect socket
</para>
<programlisting role="php">
<![CDATA[
<?php
/*
The socket is persistent so this function is called only on the
first request to the script.
*/
function on_new_socket_cb(ZMQSocket $socket, $persistent_id = null)
{
if ($persistent_id === 'server') {
$socket->bind("tcp://localhost:12122");
} else {
$socket->connect("tcp://localhost:12122");
}
}
/* Allocate a new context */
$context = new ZMQContext();
/* Create a new socket */
$socket = $context->getSocket(ZMQ::SOCKET_REP, 'server', 'on_new_socket_cb');
$message = $socket->recv();
echo "Received message: {$message}\n";
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="notes">
<para>
The callback signature
<note>
<para>
function on_new_socket_cb(ZMQSocket $socket, string $persistent_id = null);
</para>
</note>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Throws ZMQSocketException on error.
</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
-->