1 <?xml version="1.0" encoding="UTF-8"?>
3 <!-- EN-Revision: 20063 -->
4 <sect1 id="zend.queue.custom">
5 <title>Zend_Queueのカスタマイズ</title>
7 <sect2 id="zend.queue.custom.adapter">
8 <title>独自のアダプタ作成</title>
11 <classname>Zend_Queue</classname>は、
12 <classname>Zend_Queue_Adapter_AdapterAbstract</classname>を実装するどんなアダプタも扱います。
14 または抽象クラス<classname>Zend_Queue_Adapter_AdapterAbstract</classname>のうちの1つを拡張することにより、
16 このアダプタとして<classname>Zend_Queue_Adapter_Array</classname>を検討することが、
20 <programlisting language="php"><![CDATA[
21 class Custom_DbForUpdate extends Zend_Queue_Adapter_Db
24 * @see tests/Zend/Queue/Custom/DbForUpdate.php のコード
26 * Custom_DbForUpdate はその行を見つけるために、SELECT ... FOR UPDATE を使います。
27 * 既存のコードよりも求められる列をもたらす可能性がよりあります。
29 * しかしながら、データベース全てに SELECT ... FOR UPDATE フィーチャがあるとは限りません。
31 * 注意: これは後でZend_Queue_Adapter_Dbのオプションに変換されました。
39 'driverOptions' => array(
40 'host' => '127.0.0.1',
42 'username' => 'queue',
43 'password' => 'queue',
49 $adapter = new Custom_DbForUpdate($options);
50 $queue = new Zend_Queue($adapter, $options);
54 同様に即座にアダプタを変えることもできます。
57 <programlisting language="php"><![CDATA[
58 $adapter = new MyCustom_Adapter($options);
59 $queue = new Zend_Queue($options);
60 $queue->setAdapter($adapter);
61 echo "Adapter: ", get_class($queue->getAdapter()), "\n";
66 <programlisting language="php"><![CDATA[
69 'namespace' => 'Custom',
70 'driverOptions' => array(
71 'host' => '127.0.0.1',
73 'username' => 'queue',
74 'password' => 'queue',
79 $queue = new Zend_Queue('DbForUpdate', $config); // Custom_DbForUpdate をロード
83 <sect2 id="zend.queue.custom.message">
84 <title>独自のメッセージクラスを作成</title>
87 <classname>Zend_Queue</classname>は、独自のメッセージクラスも扱います。
92 <programlisting language="php"><![CDATA[
93 class Zend_Queue_Message
95 protected $_data = array();
101 <filename>tests/Zend/Queue/Custom/Message.php</filename>でコード例をご覧下さい。
105 <sect2 id="zend.queue.custom-iterator">
106 <title>独自のメッセージ・イテレータクラスを作成</title>
109 <classname>Zend_Queue</classname>は、独自のメッセージ・イテレータ・クラスも扱います。
111 <methodname>Zend_Queue_Adapter_Abstract::recieve()</methodname>からメッセージを返すために使われます。
113 <methodname>Zend_Queue_Abstract::receive()</methodname>は、
114 <classname>Zend_Queue_Message_Iterator</classname>のようなコンテナ・クラスを常に返さなければなりません。
118 <filename>tests/Zend/Queue/Custom/Messages.php</filename>でファイル名の例をご覧ください。
122 <sect2 id="zend.queue.custom.queue">
123 <title>独自の待ち行列クラスを作成</title>
126 <classname>Zend_Queue</classname>は上書きすることも簡単にできます。
130 <filename>tests/Zend/Queue/Custom/Queue.php</filename>でファイル名の例をご覧ください。