| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- Reviewed: no -->
- <!-- EN-Revision: 24249 -->
- <sect1 id="zend.queue.custom">
- <title>Zend_Queueのカスタマイズ</title>
- <sect2 id="zend.queue.custom.adapter">
- <title>独自のアダプタ作成</title>
- <para>
- <classname>Zend_Queue</classname>は、
- <classname>Zend_Queue_Adapter_AdapterAbstract</classname>を実装するどんなアダプタも扱います。
- 既存のアダプタ、
- または抽象クラス<classname>Zend_Queue_Adapter_AdapterAbstract</classname>のうちの1つを拡張することにより、
- 独自のアダプタを作成できます。
- このアダプタとして<classname>Zend_Queue_Adapter_Array</classname>を検討することが、
- 最も簡単に概念化できると提案します。
- </para>
- <programlisting language="php"><![CDATA[
- class Custom_DbForUpdate extends Zend_Queue_Adapter_Db
- {
- /**
- * @see tests/Zend/Queue/Custom/DbForUpdate.php のコード
- *
- * Custom_DbForUpdate はその行を見つけるために、SELECT ... FOR UPDATE を使います。
- * 既存のコードよりも求められる列をもたらす可能性がよりあります。
- *
- * しかしながら、データベース全てに SELECT ... FOR UPDATE フィーチャがあるとは限りません。
- *
- * 注意: これは後でZend_Queue_Adapter_Dbのオプションに変換されました。
- *
- * このコードは良い例をまだ提供します。
- */
- }
- $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>
- 同様に即座にアダプタを変えることもできます。
- </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); // Custom_DbForUpdate をロード
- ]]></programlisting>
- </sect2>
- <sect2 id="zend.queue.custom.message">
- <title>独自のメッセージクラスを作成</title>
- <para>
- <classname>Zend_Queue</classname>は、独自のメッセージクラスも扱います。
- 変数はアンダーラインで始めます。
- 例えば:
- </para>
- <programlisting language="php"><![CDATA[
- class Zend_Queue_Message
- {
- protected $_data = array();
- }
- ]]></programlisting>
- <para>
- 既存のメッセージクラスを拡張できます。
- <filename>tests/Zend/Queue/Custom/Message.php</filename>でコード例をご覧下さい。
- </para>
- </sect2>
- <sect2 id="zend.queue.custom-iterator">
- <title>独自のメッセージ・イテレータクラスを作成</title>
- <para>
- <classname>Zend_Queue</classname>は、独自のメッセージ・イテレータ・クラスも扱います。
- メッセージ・イテレータ・クラスは、
- <methodname>Zend_Queue_Adapter_Abstract::recieve()</methodname>からメッセージを返すために使われます。
- たとえメッセージが1つだけだとしても、
- <methodname>Zend_Queue_Abstract::receive()</methodname>は、
- <classname>Zend_Queue_Message_Iterator</classname>のようなコンテナ・クラスを常に返さなければなりません。
- </para>
- <para>
- <filename>tests/Zend/Queue/Custom/Messages.php</filename>でファイル名の例をご覧ください。
- </para>
- </sect2>
- <sect2 id="zend.queue.custom.queue">
- <title>独自の待ち行列クラスを作成</title>
- <para>
- <classname>Zend_Queue</classname>は上書きすることも簡単にできます。
- </para>
- <para>
- <filename>tests/Zend/Queue/Custom/Queue.php</filename>でファイル名の例をご覧ください。
- </para>
- </sect2>
- </sect1>
|