More Related Content
PDF
PDF
ODP
Ultimate completion environment with neocomplcache in vim PDF
PDF
PPTX
PDF
ODP
What's hot
PDF
PPTX
PDF
我が evil-mode を嫌いな理由 〜evil-mode の闇〜 PDF
かなりすごい発表(かなり) at VimConf2014 PDF
Webページで学ぶJavaScript2013 第7回 PDF
PDF
PDF
PPT
PPTX
PDF
Introducing hhvm hack-async PDF
PDF
Similar to ある戦いの記憶から探るPHPの闇と戦うコツ
PDF
PDF
PDF
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2011 KEY
PDF
PHP で実行中のスクリプトの動作を下から覗き見る PDF
PPT
Shibuya.pm#8 - ImageFight - HTML 2.0 New Browser Detection PDF
PECL operator で演算子オーバーロード PPTX
PDF
徳丸本に学ぶ 安全なPHPアプリ開発の鉄則2012 PPTX
徳丸本に載っていないWebアプリケーションセキュリティ PDF
PPTX
PDF
PPTX
ある戦いの記憶から探るPHPの闇と戦うコツ
- 1.
- 2.
- 3.
自己紹介
● HN:FAL
● Twitter:@fal_aqua04
● PHPは仕事で2年、趣味ではもっと前から。
● 最近は、スマホ向けサイト構築がメイン。
● PHPの前はWeb系Java屋でした。
● Objective-C, Python等も触ったり。
● 見た目は真っ黒!中身はおっさん!
- 4.
- 5.
PECL::Imagickってなんぞや?
● PHPで画像処理をするライブラリ
● 公式Manualの「画像処理および作成」参照
● GDより高機能&高画質。ただし重い。
● 実際は、ImageMagickAPIのWrapper
- 6.
PECL::Imagickってなんぞや?
● PHPで画像処理をするライブラリ
● 公式Manualの「画像処理および作成」参照
● GDより高機能&高画質。ただし重い。
● 実際は、ImageMagickAPIのWrapper
アニメGIFの編集という案件のため、利用開始
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
大変でした。
● 癖が強い(特にアニメGIF関係)
○ イテレータの概念とか。
○ 画像出力の方法の差とか。
○ 画像処理前に各コマをバラして、合成後に最適化する、
とか。
正直、PHPを書いているというより、
PHPでフォトレタッチソフトを触ってるイメージですね。
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
大変でした。
● サンプルソースで使ってないメソッドの重要性
○ パフォーマンスが出ないので調査。
○ 参考に見ていたサイト上のソースにて
destroy()
という怪しいメソッドを発見。
○ ドキュメントの「基本的な使用法」に乗ってる
サンプルソースにはそんなメソッド使われてないよ。
○ でも、開いた画像っていつ解放してるんだ?
もしかして、明示的に解放しないとダメなんじゃね?
- 19.
大変でした。
● サンプルソースで使ってないメソッドの重要性
○ パフォーマンスが出ないので調査。
○ 参考に見ていたサイト上のソースにて
destroy()
という怪しいメソッドを発見。
○ ドキュメントの「基本的な使用法」に乗ってる
サンプルソースにはそんなメソッド使われてないよ。
○ でも、開いた画像っていつ解放してるんだ?
もしかして、明示的に解放しないとダメなんじゃね?
○ ビンゴ!
- 20.
- 21.
大変でした。
● 同時アクセスを捌けない
○ 単体アクセスは何とかなったけど、10程度の同時アクセ
スに耐えられない。
○ 多重アクセス時の状況を想像してみる。
→それって、PhotoShopで大量の画像を開いてるような
モンじゃね?
- 22.
大変でした。
● 同時アクセスを捌けない
○ 単体アクセスは何とかなったけど、10程度の同時アクセ
スに耐えられない。
○ 多重アクセス時の状況を想像してみる。
→それって、PhotoShopで大量の画像を開いてるような
モンじゃね?
○ 無理じゃん。
- 23.
大変でした。
● 同時アクセスを捌けない
○ 単体アクセスは何とかなったけど、10程度の同時アクセ
スに耐えられない。
○ 多重アクセス時の状況を想像してみる。
→それって、PhotoShopで大量の画像を開いてるような
モンじゃね?
○ 無理じゃん。
○ 対策:簡易キュー的なもので、同時実行数を減らす。
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.