File: Zend_Queue-Custom.xml

package info (click to toggle)
zendframework 1.12.9%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 133,584 kB
  • sloc: xml: 1,311,829; php: 570,173; sh: 170; makefile: 125; sql: 121
file content (135 lines) | stat: -rw-r--r-- 4,545 bytes parent folder | download | duplicates (2)
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
<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect1 id="zend.queue.custom">
    <title>Anpassen von Zend_Queue</title>

    <sect2 id="zend.queue.custom.adapter">
        <title>Erstellung eigener Adapter</title>

        <para>
            <classname>Zend_Queue</classname> akzeptiert jeden Adapter der
            <classname>Zend_Queue_Adapter_AdapterAbstract</classname> implementiert. Man kann
            eigene Adapter erstellen indem einer der existierenden Adapter, oder die abstrakte
            Klasse <classname>Zend_Queue_Adapter_AdapterAbstract</classname> erweitert wird.
            Es wird empfohlen <classname>Zend_Queue_Adapter_Array</classname> anzuschauen da
            dieser Adapter in seiner Konzeption der einfachste ist.
        </para>

        <programlisting language="php"><![CDATA[
class Custom_DbForUpdate extends Zend_Queue_Adapter_Db
{
    /**
     * @see Code in tests/Zend/Queue/Custom/DbForUpdate.php
     *
     * Custom_DbForUpdate verwendet SELECT ... FOR UPDATE um seine Zeilen zu
     * finden. Das ist besser um die gewünschten Zeilen zu erstellen als der
     * existierende Code.
     *
     * Trotzdem haben nicht alle Datenbanken SELECT ... FOR UPDATE als Feature.
     *
     * Notiz: Das wurde später konvertiert um eine Option für
     * Zend_Queue_Adapter_Db zu sein.
     *
     * Dieser Code ist trotzdem ein gutes Beispiel.
     */
}

$options = array(
    'name'          => 'queue1',
    'driverOptions' => array(
        'host'      => '127.0.0.1',
        'port'      => '3306',
        'username'  => 'queue',
        'password'  => 'queue',
        'dbname'    => 'queue',
        'type'      => 'pdo_mysql'
    )
);

$adapter = new Custom_DbForUpdate($options);
$queue   = new Zend_Queue($adapter, $options);
]]></programlisting>

        <para>
            Man kann den Adapter auch im Betrieb ändern.
        </para>

        <programlisting language="php"><![CDATA[
$adapter = new MyCustom_Adapter($options);
$queue   = new Zend_Queue($options);
$queue->setAdapter($adapter);
echo "Adapter: ", get_class($queue->getAdapter()), "\n";
]]></programlisting>

        <para>or</para>

        <programlisting language="php"><![CDATA[
$options = array(
    'name'           => 'queue1',
    'namespace'      => 'Custom',
    'driverOptions'  => array(
        'host'       => '127.0.0.1',
        'port'       => '3306',
        'username'   => 'queue',
        'password'   => 'queue',
        'dbname'     => 'queue',
        'type'       => 'pdo_mysql'
    )
);
$queue = new Zend_Queue('DbForUpdate', $config); // loads Custom_DbForUpdate
]]></programlisting>
    </sect2>

    <sect2 id="zend.queue.custom.message">
        <title>Eine eigene Nachrichtenklasse erstellen</title>

        <para>
            <classname>Zend_Queue</classname> akzeptiert auch eigene Nachrichten Klassen. Unsere
            Variablen beginnen mit einem Unterstrich. Zum Beispiel:
        </para>

        <programlisting language="php"><![CDATA[
class Zend_Queue_Message
{
    protected $_data = array();
}
]]></programlisting>

        <para>
            Man kann die bestehende Nachrichten Klasse erweitern. Siehe den Beispielcode in
            <filename>tests/Zend/Queue/Custom/Message.php</filename>.
        </para>
    </sect2>

    <sect2 id="zend.queue.custom-iterator">
        <title>Erstellen einer eigenen Nachrichten Iterator Klasse</title>

        <para>
            <classname>Zend_Queue</classname> akzeptiert auch eine eigene Nachrichten Iterator
            Klasse. Diese Nachrichten Iterator Klasse wird verwendet um Nachrichten von
            <methodname>Zend_Queue_Adapter_Abstract::recieve()</methodname> zurckzugeben.
            <methodname>Zend_Queue_Abstract::receive()</methodname> sollte immer eine Controller
            Klasse zurückgeben so wie <classname>Zend_Queue_Message_Iterator</classname> selbst
            wenn nur eine Nachricht vorhanden ist.
        </para>

        <para>
            Siehe den Beispiel Dateinamen in
            <filename>tests/Zend/Queue/Custom/Messages.php</filename>.
        </para>
    </sect2>

    <sect2 id="zend.queue.custom.queue">
        <title>Erstellen einer eigenen Queue Klasse</title>

        <para>
            <classname>Zend_Queue</classname> kann auch sehr einfach überladen werden.
        </para>

        <para>
            Siehe den Beispiel Dateinamen in
            <filename>tests/Zend/Queue/Custom/Queue.php</filename>.
        </para>
    </sect2>
</sect1>