PHP & Queue

7,074 views
7,001 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
7,074
On SlideShare
0
From Embeds
0
Number of Embeds
213
Actions
Shares
0
Downloads
16
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

PHP & Queue

  1. 1. PHP & Queue PHP Study Meeting in Kanto, Japan #47 させざき 2009.11.7 github.com/sasezaki Photo by skoop / http://www.flickr.com/photos/skoop/2547899690/
  2. 2. ・PHP5.3はNowdocの誘惑に負けて使ってます。 ・YQLがあればいらないスクレイパークライアント作ってます。 ・カメラのついてないPHS使ってます。
  3. 3. これからいくつか 質問していくので 挙手お願い致しま す。 <(_ _)>
  4. 4. Q1. SplQueueというクラスがPHP5.3では 絶対存在するということを知っている方
  5. 5. ・・・
  6. 6. データ構造クラスのQueue・・・SplQueue SplQueue クラスとは・・・ キューの主要な機能を提供します。 双方向リンクリストを使用して実装しています。(マニュアルより) http://php.net/manual/ja/class.splqueue.php $phpman SplQueue あるいは $php --rc SplQueue ・反復処理の方向はFIFO。 ・SplPriorityQueueというのもある。 ・SplStackももちろんある。 『新訳 データ構造とネットワークアルゴリズム』 (R.E Tarjan (著), 岩野 和生 (翻訳)  毎日コミュニケーションズ))より
  7. 7. Q2. 定期バッチジョブを現在関わっている システムにて動かしているという方
  8. 8. ・・・
  9. 9. Q3. PHPからバックグラウンド処理への”逐次 ジョブ”(C、Java、RDBMSのストアドなど) を現在関わっているシステムにて動かし ているという方
  10. 10. ・・・
  11. 11. Q4. PHPで定期バッチ処理コードを書いて動 かしたことのある方
  12. 12. ・・・
  13. 13. Q5. Gearmanを使ったこと・試したことのある方 (gearman拡張モジュール/perlの実装 両方)
  14. 14. Gearman・・・ジョブキューの注目株? ・Perlの実装版はYAPC Asia 2007でも取り上げら れる。 ・Digg、fuba_recorderなどでの運用実績  (しかもNet_GearmanはDiggのコピーライト入り) ・2008年にBrian AkerによりCの実装版がリリース。 - 2009.9.29 Gearman server version 0.10 - 2009.9.29 Gearman php extension 0.6 ・Rasmus LerdorfのブログやAndrei Zmievskiのスラ イドにて言及あり ・・Slides about Gearman http://www.slideshare.net/felixdv/high-gear-php-with-gearman http://oddments.org/?p=55 http://www.slideshare.net/andreizm/all-the-little-pieces
  15. 15. ・・・
  16. 16. Q6. Q4Mを用いたシステムを現在稼働させて いるという方
  17. 17. Q7. Q4M以外のメッセージキューイングシステ ムを稼働させたことのある方
  18. 18. ・・・
  19. 19. Q8. Zend Frameworkには、1.9から Zend_Queueがあるのを知っている方
  20. 20. ・・・。
  21. 21. Zend_Queue ・ZF1.9にて追加されたコンポーネント、 クライアント・ラッパー的なクラス  (これ自体にジョブキューシステムが share/php/Zend/Queue |-- Adapter  備わってる訳ではない) | |-- Abstract.php | |-- Activemq.php ・ZFらしく各種アダプターが用意されている AdapterAbstract.php | |-- | |-- AdapterInterface.php  ・Array(主にデバッグ用) | |-- Apachemq.php ・Zend_Db | |-- Array.php  ・Memcacheq | |-- Db | | |-- Message.php  ・Apache ActiveMQ | | |-- Queue.php - Zend_Queue_Stompを使用 | | |-- mysql.sql  (ActiveMQについては第28回PHP勉強会 | | |-- postgresql.sql | | `-- queue_sqlite.php     でのakkyさんの発表あり) | |-- Db.php  ・Zend Platform JobQueue | |-- Memcacheq.php   | |-- Null.php | `-- PlatformJobQueue.php  ※ Amazon SQS用のアダプタも作られていましたが、 Exception.php |--  Zend_Service_Amazon_Sqsに移動されました。 |-- Message | |-- Iterator.php | `-- PlatformJob.php |-- Message.php `-- Stomp
  22. 22. Zend_Queueの例 require_once 'Zend/Queue.php'; // アダプタ用のオプション設定 $options = array('name' => 'queue1'); // 配列待ち行列の作成 $queue = new Zend_Queue('Array', $options); // 待ち行列にメッセージを送信 $queue->send('Hello 1'); $queue->send('Hello 2'); $queue->send('Hello 3'); // 待ち行列からメッセージを2件取り出す $messages = $queue->receive(2); // メッセージ群はIteratorに格納されている。 foreach ($messages as $message) { echo $message->body, ","; } // Hello 1, Hello2, と表示される。 詳しい使い方はテストコードを参照
  23. 23. Zend_Queueを使ってみる デモ概要                  ・Queueと言えばクローラですが(?) http://labs.cybozu.co.jp/blog/kazuho/archives/2008/04/q4m_crawler.php http://coderepos.org/share/browser/docs/mala/20081127-shibuyapm10-lt/main.txt ・Zendの人が作ったSpiderライブラリを改造  (Httpリクエストのキューを扱う) ・perlのWeb::Collectorっぽいものを作る。 http://en.yummy.stripper.jp/?eid=976179 ・今回は架空の画像掲示板からのぶっっこ抜き例
  24. 24. demo
  25. 25. ・・・
  26. 26. “一方ロシアは、 前髪ぱっつん専用tumblr(実在)から api経由で画像を取得した。”
  27. 27. ご清聴・ご協力ありがとうございました。
  28. 28. 結果 30人中 Q1 1人 Q2 18人 Q3 1人 Q4 25人 Q5 1人 Q6 1人 Q7 3人 Q8 1人

×