NAME

Gungho::Engine::POE - Gungho用POEエンジン

SYNOPSIS

engine:
  module: POE
  config:
    loop_delay: 5 
    client:
      spawn: 2
      agent:
        - AgentName1
        - AgentName2
      max_size: 16384
      follow_redirect: 2
      proxy: http://localhost:8080
    keepalive:
      keep_alive: 10
      max_open: 200
      max_per_host: 20
      timeout: 10
    dns:
      # disable: 1 If you want to disable DNS resolution by Gungho

DESCRIPTION

Gunghog::Engine::POE�POEを用��Gunghoを動�����モジュール��。

CONFIGURATION

Gungho::Engine::POEã�§ä½¿ç”¨å�¯èƒ½ã�ªè¨­å®šé …ç›®ã�¯ä»¥ä¸‹ã�®é€šã‚Šã�§ã�™ï¼š

client.loop_delay

client.loop_delay �dispatch�定期的�呼�出�れる���待�秒数を 指定���。

ã�„ã�¤ã�©ã‚Œã� ã�‘ã�®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã�Œç™ºç”Ÿã�™ã‚‹ã�®ã�‹ã‚�ã�‹ã‚‰ã�šã€�ã�ªã�Šã�‹ã�¤ãƒªã‚¯ã‚¨ã‚¹ãƒˆã�Œç™ºç”Ÿã�—ã�Ÿ 直後ã�«Gungho内ã�§ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’é€�ä¿¡ã�—ã�Ÿã�„å ´å�ˆã�¯ã�“ã�®å€¤ã‚’å°�ã�•ã‚�ã�«è¨­å®šã�™ã‚‹å¿…è¦�ã�Œ ã�‚ã‚Šã�¾ã�™ã€‚

ã�Ÿã� ã�—ã�“ã�®å€¤ã‚’ã�‚ã�¾ã‚Šå°�ã�•ã��設定ã�—ã�¦ã�—ã�¾ã�†ã�¨HTTP通信を行ã�†ã‚ˆã‚Šé »ç¹�ã�«dispatch を呼ã�³å‡ºã�™äº‹ã�«ã�ªã�£ã�Ÿã‚Šï¼ˆHTTP通信ã�®ã�»ã�†ã�Œã�Šã‚�ã��ã�‹ã�«ã�ªã‚Šã€�パフォーマンスã�Œä½Žä¸‹ ã�™ã‚‹ï¼‰ã€� ã�‚ã�¾ã‚Šã�«ã‚‚膨大ã�ªé‡�ã�®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’é€�ä¿¡ã�—ã�¦ã�—ã�¾ã�†ã�¨Gunghoより先ã�® レイヤーã�§ã‚¹ãƒ”ードã�Œæ¥µç«¯ã�«é�…ã��ã�ªã�£ã�Ÿã‚Šã�™ã‚‹åŽŸå› ã�¨ã�ªã‚Šå¾—ã�¾ã�™ã€‚

基本的ã�«ã�¯ã�‚ã�¾ã‚Šå°�ã�•ã�™ã�Ž ã�‹ã�ˆã�£ã�¦ãƒ‘フォーマンスã�Œæ‚ªã��ã�ªã‚Šã�¾ã�™ã�®ã�§æ³¨æ„�ã�—ã�¦ 設定ã�—ã�¦ã��ã� ã�•ã�„。

client.spawn

client.spawn �内部�使用���るPOE::Component::Client::HTTP�数を指定 ���。POE::Component::Client::HTTP�1セッション毎��る程度以上�リクエスト を���る��応����り始�る���れを回��る����る程度�セッション数 を作る必��出��る事��り��。

ã�Ÿã� ã�—ã€�ã��ã�®å…ˆã�®ãƒ�ットワーク自体ã�Œé�…ã��ã�ªã�£ã�¦ã�„ã‚‹å�¯èƒ½æ€§ã‚‚高ã�„ã�®ã�§ã�“ã�®å€¤ã‚’ 極端ã�«é«˜ã��ã�—ã�Ÿã�¨ã�“ã‚�ã�§ã��ã‚Œã�»ã�©ã�®ãƒ‘フォーマンスアップã�¯è¦‹è¾¼ã‚�ã�ªã�„å ´å�ˆã‚‚ã�‚ã‚Šã�¾ã�™ã€‚

ãƒ�ットワーク帯域ã�Œä½™ã�£ã�¦ã�„る状態ã�§ã€�ã�ªã�Šã�‹ã�¤Gunghoå�˜ä½“ã�§ã�®HTTP通信ã�Œé�…ã��ã�†ã�ª å ´å�ˆã�®ã�¿ã�“ã�®å€¤ã‚’大ã��ã��ã�—ã�¦ã��ã� ã�•ã�„。

デフォルト値�2��。

dns.disable

DNS解決をã�—ã�Ÿã�„å ´å�ˆã�¯ã�“ã�®å€¤ã‚’1ã�«ã�—ã�¦ã��ã� ã�•ã�„。一部ã�®ç’°å¢ƒã�§ã�¯ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆå�´ã�§ã�® DNS解決ã�Œé§„ç›®ã�§ã‚‚経路ã�«ã�‚るプロキシã�ŒDNS解決を行ã�†ç­‰ã�®è¨­å®šã�Œã�•ã‚Œã�¦ã�Šã‚Šã€�ã�“ã‚Œã�Œ å•�é¡Œã�¨ã�ªã‚‹äº‹ã‚‚ã�‚ã‚Šã�¾ã�™ã€‚ã��ã�®éš›ã�¯ã�“ã�®é …目を1ã�«è¨­å®šã�—ã�¦ã��ã� ã�•ã�„。

デフォルト値�0��。

keepalive

keepaliveé …ç›®ã�¯POE::Component::Client::Keepaliveを設定ã�™ã‚‹ã�Ÿã‚�ã�« 使用ã�—ã�¾ã�™ã€‚

プロキシを通ã�—ã�Ÿç’°å¢ƒã�§Gunghoを使用ã�—ã�¦ã�„ã‚‹å ´å�ˆã�¯ã�“ã�®è¨­å®šã�Œé‡�è¦�ã�«ã�ªã�£ã�¦ã��ã‚‹ å ´å�ˆã�Œã�‚ã‚Šã�¾ã�™ã€‚Gungho::Engine::POEã�¯å†…部ã�§æŽ¥ç¶šä¸­ã�®ã‚½ã‚±ãƒƒãƒˆã‚’使ã�„回ã�™ã‚ˆã�†ã�« 作られã�¦ã�„ã�¾ã�™ã�Œã€�ã‚‚ã�—プロキシã�«ã�¤ã�ªã�’ã‚‹å ´å�ˆã�¯æŽ¥ç¶šå¯¾è±¡ã‚µãƒ¼ãƒ�ーã�Œã�²ã�¨ã�¤ã�ªã�®ã�§ã€� å…¨ã�¦ã�®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã�Œå�Œä¸€ã‚½ã‚±ãƒƒãƒˆã‚’使ã�†ã‚ˆã�†ã�«ã�ªã�£ã�¦ã�—ã�¾ã�„ã€�çµ�果的ã�«ä¸¦åˆ—処ç�†ã�Œ ã�§ã��ã�ªã��ã�ªã‚Šã�¾ã�™ (é€�é�Žåž‹ãƒ—ロキシã�¯ã�“ã�®å¯¾è±¡ã�«å�«ã�¾ã‚Œã�¾ã�›ã‚“)。

Gunghoã�¯ãƒ—ロキシã�®ä½¿ç”¨ã‚’検出ã�—ã�Ÿå ´å�ˆã�¯ã�“ã�®è¨­å®šã‚’自動的ã�«ã�™ã‚‹ã‚ˆã�†åŠªåŠ›ã�—ã�¾ã�™ã�Œã€� 明示的ã�«æŒ‡å®šã�™ã‚‹å ´å�ˆã�¯

keepalive:
  keep_alive: 0

ã�¨æŒ‡å®šã�—ã�¦ã��ã� ã�•ã�„。ã��ã�®ä»–ã�®POE::Component::Client::Keepalive設定を変更 ã�™ã‚‹å ´å�ˆã�¯ã€�以下ã�®ã‚ˆã�†ã�«è¨­å®šã�—ã�¦ã��ã� ã�•ã�„

keepalive:
  max_per_host: ....
  max_open: ...
  timeout: ...

keepalive.timeouté …ç›®ã‚’è¨­å®šã�™ã‚‹å ´å�ˆã�¯USING KEEPALIVEã‚‚ å�‚ç…§ã�—ã�¦ã��ã� ã�•ã�„。

POE::Component::Client::HTTP AND DECODED CONTENTS

POE::Component::Client::HTTP ã�¯ãƒ�ージョン0.80以é™�ã€�å�–å¾—ã�—ã�Ÿãƒ¬ã‚¹ãƒ�ンス内容を å‹�手ã�«Perl Unicodeã�«ãƒ‡ã‚³ãƒ¼ãƒ‰ã�—ã�¦ã�—ã�¾ã�†äº‹ã�Œã�‚ã‚Šã�¾ã�™ã€‚ã��ã�®å ´å�ˆã€�ã�Ÿã�¨ã�ˆHTTP ヘッダー自体ã�Œä»¥ä¸‹ã�®ã‚ˆã�†ã�«ã�ªã�£ã�¦ã�„ã�¦ã‚‚ã€�実際ã�«æ¸¡ã�£ã�¦ã��るデータ内容ã�¯ æ­£è¦�化ã�•ã‚Œã�ŸUnicodeã�§ã�‚る事ã�Œã�‚ã‚Šã�¾ã�™ï¼š

Content-Type: text/html; charset=euc-jp

ã�“ã‚Œã�¯POE::Component::Client::HTTPã�ŒContent-Encodingã‚’ã�†ã�¾ã��処ç�†ã�—よã�†ã�¨ã�—ã�¦ è¡Œã�£ã�¦ã�„る一連ã�®å‹•ä½œã�®å‰¯ä½œç”¨ã�ªã�®ã�§ã�™ã�Œã€�ヘッダーを信用ã�—ã�¦ãƒ‡ã‚³ãƒ¼ãƒ‰ã‚’ã�—ã�¦ã�¿ã�Ÿã‚‰ エラーã�Œèµ·ã�“ã‚‹ã€�ã‚‚ã�—ã��ã�¯æ–‡å­—化ã�‘ã�Œèµ·ã�“ã‚‹ç­‰ã�®ç�¾è±¡ã�®åŽŸå› ã�¨ã�ªã‚Šå¾—ã�¾ã�™ã€‚

Gungho�����題を回��る���以下�環境変数を�ェック���れら� 正��れ�回�策を動作����。

GUNGHO_ENGINE_POE_SKIP_DECODE_CONTENT = 1
# or
GUNGHO_ENGINE_POE_FORCE_ENCODE_CONTENT = 1

ã��ã‚Œã�žã‚Œã�®æŒ™å‹•è©³ç´°ã�«ã�¤ã�„ã�¦ã�¯ENVIRONMENT VARIABLES ã‚’ã�”覧ã��ã� ã�•ã�„。

SPECIFYING USER AGENT

Gungho::Engine::POEã�¯POE::Component::Client::HTTPã�Œã��れを実装ã�—ã�¦ã�„ã‚‹ã�Ÿã‚�ã€� 複数ã�®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚¨ãƒ¼ã‚¸ã‚§ãƒ³ãƒˆå��を使用ã�™ã‚‹äº‹ã�Œã�§ã��ã�¾ã�™ã€‚複数ã�®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚¨ãƒ¼ã‚¸ã‚§ãƒ³ãƒˆ å��を使用ã�™ã‚‹ã�«ã�¯ç›´æŽ¥client.agentã�«ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚¨ãƒ¼ã‚¸ã‚§ãƒ³ãƒˆå��ã‚’å�«ã‚“ã� リストを 渡ã�—ã�¦ã��ã� ã�•ã�„。

ã�Ÿã� ã�—ã€�ä»–ã�®ã‚¨ãƒ³ã‚¸ãƒ³ã�¯ã�“ã�®æ©Ÿèƒ½ã‚’実装ã�—ã�¦ã�„ã�ªã�„å�¯èƒ½æ€§ã�Œé«˜ã�„ã�®ã�§ã€�設定ファイルを ãƒ�ータブルã�ªã‚‚ã�®ã�«ã�—ã�Ÿã�„å ´å�ˆã�¯ã€�トップレベルã�®é …ç›®ã�§ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚¨ãƒ¼ã‚¸ã‚§ãƒ³ãƒˆå��ã‚’ 指定ã�—ã�¦ã��ã� ã�•ã�„:

user_agent: my_user_agent
engine:
  module: POE
  ...

USING KEEPALIVE

Gungho::Engine::POE�内部�POE::Component::Client::Keepaliveを使用�� ソケット接続を制御�����。

��ん��設定�パフォーマンス以外特�ユーザー�目�触れるも����り��ん�� timeout設定�エンジン�終了�る時�影響�る�能性も�り��。timeout値 �高����接続�切れる��POE自体�活動を止�られ�������由���� �れ�正常�動作��。

ENVIRONMENT VARIABLES

GUNGHO_ENGINE_POE_SKIP_DECODE_CONTENT

ã�“ã�®å€¤ã�Œæ­£ã�¨ã�ªã�£ã�¦ã�„ã‚‹å ´å�ˆã€�Gunghoã�¯HTTP::Responseã�®ãƒ�ームスペース上ã�« 関数を作æˆ�ã�—ã€�decoded_content()を呼んã�§ã‚‚デコードã�Œè¡Œã‚�ã‚Œã�ªã�„よã�†ã�«ã�—ã�¾ã�™ã€‚ ã�Šè¡Œå„€ã�®ã‚ˆã��ã�ªã�„作法ã�§ã�™ã�Œã€�ã�¨ã‚Šã�‚ã�ˆã�šã�“ã‚Œã�§ãƒ‡ã‚³ãƒ¼ãƒ‰ã�¯èµ·ã�“らã�ªã��ã�ªã‚Šã�¾ã�™ã€‚

��回�策�デフォルト�有効�������。

GUNGHO_ENGINE_POE_FORCE_ENCODE_CONTENT

ã�“ã�®å€¤ã�Œæ­£ã�¨ã�ªã�£ã�¦ã�„ã‚‹å ´å�ˆã€�Gunghoã�¯handle_responnse()ã�«æˆ»ã�£ã�¦ã��ã�Ÿãƒ¬ã‚¹ãƒ�ンス ã‚’Handlerã�«æ¸¡ã�™å‰�ã�«Content-Typeã�ŒæŒ‡å®šã�™ã‚‹å€¤ã�«ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‰ã�—ã�ªã�Šã�—ã�¾ã�™ã€‚

��回�策�デフォルト�無効�������。

METHODS

setup

エンジンを�期化���。

run

メインループを開始���。

send_request

与�られ�リクエストを処����。

TODO

ファイルシステムã�¸ã�®HTTPレスãƒ�ンスã�®æ ¼ç´�

1 POD Error

The following errors were encountered while parsing the POD:

Around line 3:

Non-ASCII character seen before =encoding in 'Gungho用POEエンジン'. Assuming CP1252