SlideShare a Scribd company logo
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/
・PHP5.3はNowdocの誘惑に負けて使ってます。
・YQLがあればいらないスクレイパークライアント作ってます。
・カメラのついてないPHS使ってます。
これからいくつか
質問していくので
挙手お願い致しま
す。 <(_ _)>
Q1.
SplQueueというクラスがPHP5.3では
絶対存在するということを知っている方
・・・
データ構造クラスのQueue・・・SplQueue
SplQueue クラスとは・・・
キューの主要な機能を提供します。
双方向リンクリストを使用して実装しています。(マニュアルより)
http://php.net/manual/ja/class.splqueue.php


$phpman SplQueue
あるいは

$php --rc SplQueue
                       ・反復処理の方向はFIFO。
                       ・SplPriorityQueueというのもある。
                       ・SplStackももちろんある。


                            『新訳 データ構造とネットワークアルゴリズム』
                  (R.E Tarjan (著), 岩野 和生 (翻訳)  毎日コミュニケーションズ))より
Q2.
定期バッチジョブを現在関わっている
システムにて動かしているという方
・・・
Q3.
PHPからバックグラウンド処理への”逐次
ジョブ”(C、Java、RDBMSのストアドなど)
を現在関わっているシステムにて動かし
ているという方
・・・
Q4.
PHPで定期バッチ処理コードを書いて動
かしたことのある方
・・・
Q5.
Gearmanを使ったこと・試したことのある方
(gearman拡張モジュール/perlの実装 両方)
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
・・・
Q6.
Q4Mを用いたシステムを現在稼働させて
いるという方
Q7.
Q4M以外のメッセージキューイングシステ
ムを稼働させたことのある方
・・・
Q8.
Zend Frameworkには、1.9から
Zend_Queueがあるのを知っている方
・・・。
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
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, と表示される。

詳しい使い方はテストコードを参照
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


 ・今回は架空の画像掲示板からのぶっっこ抜き例
demo
・・・
“一方ロシアは、
前髪ぱっつん専用tumblr(実在)から
api経由で画像を取得した。”
ご清聴・ご協力ありがとうございました。
結果 30人中
Q1 1人
Q2 18人
Q3 1人
Q4 25人
Q5 1人
Q6 1人
Q7 3人
Q8 1人

More Related Content

What's hot (20)

PPTX
Php in ruby
do_aki
 
PDF
2020 acl learning_to_recover_from_multi-modality_errors_for_non-autoregressiv...
広樹 本間
 
PDF
Improvement future api
Akira Takahashi
 
PDF
Inside FastEnum
Takaaki Suzuki
 
PDF
From JS To CLJS
Kent Ohashi
 
PDF
Black jumbodogの新機能(webapi)~自動テストにおけるsmtpモックとして
Shinichi Hirauchi
 
PPT
いまさら聞けないRake入門
Tomoya Kawanishi
 
PPT
Puppet Best Practices? at COOKPAD
Gosuke Miyashita
 
PDF
JVMの中身を可視化してみた
Kengo Toda
 
PDF
ラムダと invokedynamic の蜜月
Taku Miyakawa
 
PPT
Apache Module
Tomohiro Ikebe
 
PDF
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
 
PDF
Final LINQ Extensions
Kouji Matsui
 
PPTX
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Takeshi Komiya
 
PDF
Java 7 invokedynamic の概要
Taku Miyakawa
 
PPTX
Fork/Join Framework
Appresso Engineering Team
 
PPTX
最速C# 7.x
Yamamoto Reki
 
PDF
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
y torazuka
 
PDF
JVM-Reading-ConcurrentMarkSweep
Minoru Nakamura
 
PDF
意識の低い自動化
greenasparagus
 
Php in ruby
do_aki
 
2020 acl learning_to_recover_from_multi-modality_errors_for_non-autoregressiv...
広樹 本間
 
Improvement future api
Akira Takahashi
 
Inside FastEnum
Takaaki Suzuki
 
From JS To CLJS
Kent Ohashi
 
Black jumbodogの新機能(webapi)~自動テストにおけるsmtpモックとして
Shinichi Hirauchi
 
いまさら聞けないRake入門
Tomoya Kawanishi
 
Puppet Best Practices? at COOKPAD
Gosuke Miyashita
 
JVMの中身を可視化してみた
Kengo Toda
 
ラムダと invokedynamic の蜜月
Taku Miyakawa
 
Apache Module
Tomohiro Ikebe
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
 
Final LINQ Extensions
Kouji Matsui
 
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Takeshi Komiya
 
Java 7 invokedynamic の概要
Taku Miyakawa
 
Fork/Join Framework
Appresso Engineering Team
 
最速C# 7.x
Yamamoto Reki
 
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
y torazuka
 
JVM-Reading-ConcurrentMarkSweep
Minoru Nakamura
 
意識の低い自動化
greenasparagus
 

Viewers also liked (18)

PDF
AZAREA-Clusterセミナー(クラウドEXPO2013春)
AzareaCluster
 
PDF
【HinemosWorld2015】B1-3_【入門】Hinemosではじめるジョブ管理
Hinemos
 
PDF
バッチソリューションAzarea cluster 2016
AzareaCluster
 
PDF
AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)
AzareaCluster
 
PDF
Asakusa Framework スモールジョブ実行エンジン & Windows対応
apirakun
 
PDF
Asynchronous Messaging入門(第4回実施分)
Tatsuaki Sakai
 
PDF
【OSC2014】監視もジョブも、クラウド管理も「Hinemos」で
Hinemos
 
PDF
Asakusa Framework 歴史探訪 & ここ最近の新機能
apirakun
 
PDF
Oracle GoldenGate Veridata概要
オラクルエンジニア通信
 
PDF
Asakusa バッチの運用を支える技術
KinebuchiTomo
 
PDF
不安定な環境の中でのバッチ処理~JobQueueシステムQudoを使った事例~
Akabane Hiroyuki
 
PDF
【HinemosWorld2015】B2-3_【テクニカル】Hinemos ver.5.0徹底解剖
Hinemos
 
PDF
Google Cloud Platformでソーシャルゲームを1本出してみた!
Hasegawa Yusuke
 
PDF
[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編
Amazon Web Services Japan
 
PDF
JobStreamerではじめるJavaBatchのクラウド分散実行
Yoshitaka Kawashima
 
PDF
ビッグデータ処理データベースの全体像と使い分け
Recruit Technologies
 
PDF
MySQL 5.7にやられないためにおぼえておいてほしいこと
yoku0825
 
PDF
ガチ(?)対決!OSSのジョブ管理ツール
賢 秋穂
 
AZAREA-Clusterセミナー(クラウドEXPO2013春)
AzareaCluster
 
【HinemosWorld2015】B1-3_【入門】Hinemosではじめるジョブ管理
Hinemos
 
バッチソリューションAzarea cluster 2016
AzareaCluster
 
AZAREA-Cluster (Hadoop Conference Japan 2013 Winter)
AzareaCluster
 
Asakusa Framework スモールジョブ実行エンジン & Windows対応
apirakun
 
Asynchronous Messaging入門(第4回実施分)
Tatsuaki Sakai
 
【OSC2014】監視もジョブも、クラウド管理も「Hinemos」で
Hinemos
 
Asakusa Framework 歴史探訪 & ここ最近の新機能
apirakun
 
Oracle GoldenGate Veridata概要
オラクルエンジニア通信
 
Asakusa バッチの運用を支える技術
KinebuchiTomo
 
不安定な環境の中でのバッチ処理~JobQueueシステムQudoを使った事例~
Akabane Hiroyuki
 
【HinemosWorld2015】B2-3_【テクニカル】Hinemos ver.5.0徹底解剖
Hinemos
 
Google Cloud Platformでソーシャルゲームを1本出してみた!
Hasegawa Yusuke
 
[AWS Summit 2012] クラウドデザインパターン#5 CDP バッチ処理編
Amazon Web Services Japan
 
JobStreamerではじめるJavaBatchのクラウド分散実行
Yoshitaka Kawashima
 
ビッグデータ処理データベースの全体像と使い分け
Recruit Technologies
 
MySQL 5.7にやられないためにおぼえておいてほしいこと
yoku0825
 
ガチ(?)対決!OSSのジョブ管理ツール
賢 秋穂
 
Ad

Similar to PHP & Queue (20)

PDF
PHP-FPMとuWSGI——mod_php以外の選択肢を探る
Yoshio Hanawa
 
PDF
PHPの今とこれから 2013
Rui Hirokawa
 
PDF
スクリプト言語PHP攻略法
Rui Hirokawa
 
KEY
ゆるかわPhp
Ryota Mochizuki
 
PPT
2009年のPHPフレームワーク
Takuya Sato
 
PDF
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
Junichi Ishida
 
PDF
いよいよPHPerもリーンで行こう
Tsutomu Chikuba
 
PPT
Cockatoo
Hiroaki Kubota
 
PPTX
php-src の歩き方
do_aki
 
PPT
Albatross
Hiroaki Kubota
 
PDF
あにみた!(PHPカンファレンス用資料)
Hiroyuki Ishiyama
 
PDF
最新PHP事情 (2000年7月22日,PHPカンファレンス)
Rui Hirokawa
 
PPTX
PHP基礎勉強会
Yuji Otani
 
PPT
関西オープンソース 2008 30days Albumの裏側
Gosuke Miyashita
 
PDF
WTM53 phpフレームワーク いまさらcodeigniter
Masanori Oobayashi
 
PDF
PHPの今とこれから2014
Rui Hirokawa
 
PDF
第21回Creators MeetUp
Kenichi Mukai
 
PDF
CPANモジュールをPHPに移植してみた話
memememomo
 
PDF
SPL fukuokaphp_1
ichikaway
 
PDF
PHP で実行中のスクリプトの動作を下から覗き見る
shinjiigarashi
 
PHP-FPMとuWSGI——mod_php以外の選択肢を探る
Yoshio Hanawa
 
PHPの今とこれから 2013
Rui Hirokawa
 
スクリプト言語PHP攻略法
Rui Hirokawa
 
ゆるかわPhp
Ryota Mochizuki
 
2009年のPHPフレームワーク
Takuya Sato
 
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
Junichi Ishida
 
いよいよPHPerもリーンで行こう
Tsutomu Chikuba
 
Cockatoo
Hiroaki Kubota
 
php-src の歩き方
do_aki
 
Albatross
Hiroaki Kubota
 
あにみた!(PHPカンファレンス用資料)
Hiroyuki Ishiyama
 
最新PHP事情 (2000年7月22日,PHPカンファレンス)
Rui Hirokawa
 
PHP基礎勉強会
Yuji Otani
 
関西オープンソース 2008 30days Albumの裏側
Gosuke Miyashita
 
WTM53 phpフレームワーク いまさらcodeigniter
Masanori Oobayashi
 
PHPの今とこれから2014
Rui Hirokawa
 
第21回Creators MeetUp
Kenichi Mukai
 
CPANモジュールをPHPに移植してみた話
memememomo
 
SPL fukuokaphp_1
ichikaway
 
PHP で実行中のスクリプトの動作を下から覗き見る
shinjiigarashi
 
Ad

More from sasezaki (12)

PPTX
このPHP QAツールがすごい!2019
sasezaki
 
PDF
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
sasezaki
 
PDF
このPHP拡張がすごい!2017
sasezaki
 
PDF
HTTPメッセージ、PHPの 事情ば分かっとっと?
sasezaki
 
PDF
PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。
sasezaki
 
PDF
phpcon2013_zf
sasezaki
 
PDF
Awesome PHP extensions! Top 50!
sasezaki
 
PPTX
PHP 触れてはいけないほうの闇の話
sasezaki
 
PPTX
これからのPHPライブラリとパッケージマネージメントの話をしよう
sasezaki
 
ODP
PHP Conference Japan 2010 : Zend Framewrok
sasezaki
 
PDF
"More" Introduction to Zend Tool
sasezaki
 
PDF
Phpstudy44 Zend Frameworkが抱えている問題は多い。
sasezaki
 
このPHP QAツールがすごい!2019
sasezaki
 
なぜ、PHPのmbstring.func_overloadをdeprecatedにするのに5年かかったのか? - 慢心、環境の違い
sasezaki
 
このPHP拡張がすごい!2017
sasezaki
 
HTTPメッセージ、PHPの 事情ば分かっとっと?
sasezaki
 
PHP、おまえだったのか。 いつもHTTPメッセージを 運んでくれたのは。
sasezaki
 
phpcon2013_zf
sasezaki
 
Awesome PHP extensions! Top 50!
sasezaki
 
PHP 触れてはいけないほうの闇の話
sasezaki
 
これからのPHPライブラリとパッケージマネージメントの話をしよう
sasezaki
 
PHP Conference Japan 2010 : Zend Framewrok
sasezaki
 
"More" Introduction to Zend Tool
sasezaki
 
Phpstudy44 Zend Frameworkが抱えている問題は多い。
sasezaki
 

PHP & Queue