Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
PECLを数えてみた
内山 雄司 @y__uti
2016-03-01 PHPBLT #3
PECL
The PHP Extension Community Library
2016-03-01 PHPBLT #3 2
courierauth krb5 PAM radius sasl DTrace inclued memprof APC APCu apcu_bc chdb coherence hidef memcache memcached memorize
...
カテゴリ別モジュール数
2016-03-01 PHPBLT #3 4
Database 56
PHP 41
Networking 35
Tools and Utilities 24
Text 17System 15
File Formats 1...
登録モジュール数の推移
2016-03-01 PHPBLT #3 5
4.2.0
4.3.0
4.4.0
5.0.0
5.1.0
5.2.0
5.3.0
5.4.0
5.5.0
5.6.0
7.0.0
0
50
100
150
200
250
...
月ごとのリリース数
2016-03-01 PHPBLT #3 6
0
10
20
30
40
50
60
2002/1/1 2006/1/1 2010/1/1 2014/1/1
リリース数
"Available Releases" の情報を集計...
ソースコードリポジトリ
2016-03-01 PHPBLT #3 7
svn.php.net 145
github.com 110
git.php.net 41
記載なし 35
bitbucket.org 3
code.google.com 3...
最新リリースの時期
2016-03-01 PHPBLT #3 8
0
5
10
15
20
25
30
35
40
2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015...
ソースコード行数
2016-03-01 PHPBLT #3 9
3
79
181
46
4
0
20
40
60
80
100
120
140
160
180
200
0 1~1,000 1,001~10,000 10,001~100,000 ...
テストファイル (phpt) 行数
2016-03-01 PHPBLT #3 10
126
3
34
81
58
11
0
20
40
60
80
100
120
140
0 1~10 10~100 100~1,000 1,001~10,000...
ソース行数 vs テスト行数
2016-03-01 PHPBLT #3 11
AOP
APC
APM
CUBRID
Cairo
DBDOEcasoundFileinfoFreeImageIMSJsonNet
Judy
KTaglibLZF
Mo...
ソース行数 vs テスト行数
2016-03-01 PHPBLT #3 12
AOP
APM
DBDO
EcasoundFileinfo FreeImage IMS JsonNet
Judy
KTaglibLZF
Mosquitto
Net_G...
お約束
クローリングでは過剰な負荷をかけないよう注意しましょう
今回は以下のようにしました
◦ HTML ファイル 1 ページ取得ごとに 5 秒 sleep
◦ 拡張モジュール (.tar.gz) 1 モジュール取得ごとに 30 秒 sleep...
Upcoming SlideShare
Loading in …5
×

PECL を数えてみた

3,138 views

Published on

PHP BLT #3 での発表資料です。PECL に登録されている PHP 拡張モジュールについて調べてみたものです。

Published in: Technology
  • Be the first to comment

  • Be the first to like this

PECL を数えてみた

  1. 1. PECLを数えてみた 内山 雄司 @y__uti 2016-03-01 PHPBLT #3
  2. 2. PECL The PHP Extension Community Library 2016-03-01 PHPBLT #3 2
  3. 3. courierauth krb5 PAM radius sasl DTrace inclued memprof APC APCu apcu_bc chdb coherence hidef memcache memcached memorize varnish WinCache yac ZendOpcache augeas env yaconf zookeeper ncurses newt termbox tvision xmms gnupg libsodium mcrypt_filter scrypt xxtea cassandra couchbase CUBRID daffodildb dbase DBDO dbplus dbx drizzle filepro hwapi ibm_db2 informix ingres isis lchash leveldb maxdb mdbtools mongo mongodb mysql mysqlnd_memcache mysqlnd_ms mysqlnd_qc mysqlnd_uh notes oci8 odbtp Ovrimos Paradox PDO PDO_4D PDO_CUBRID PDO_DBLIB PDO_FIREBIRD PDO_IBM PDO_INFORMIX PDO_MYSQL PDO_OCI PDO_ODBC PDO_PGSQL PDO_SQLANYWHERE PDO_SQLITE pdo_sqlsrv pdo_user PDO_XML pq redis riak sqlanywhere SQLite sqlite3 sqlsrv tdb tokyo_tyrant date_time hrtime timezonedb dazuko fuse inotify mogilefs phdfs smbclient xattr html_parse tidy apfd json_post pecl_http txforward uri_template cairo cairo_wrapper framegrab FreeImage GDChart gmagick imagick imlib2 opencv pango qb rsvg SeasLog mailparse POP3 vpopmail big_int geospatial hdr_histogram lapack stats trader amqp apn ares cvsclient cyrus DBus esmtp event gearman geoip gRPC gupnp IMS ip2location ircclient kadm5 Mosquitto mqseries msession netools Net_Gopher ocal opendirectory perforce rdkafka sam spread ssh2 tcpwrap uuid yami yaz yp zeroconf zmq Bitset coin_acceptor cybercash cybermut mcve spplus TCLink domxml dom_varimport WBXML xmldiff xmlReader XMLRPCi xmlwriter xslcache axis2 hprose json jsonc jsond jsonnet oauth SCA_SDO xcommerce yar AOP apd APM automap bcompiler BLENC classkit docblock ffi funcall htscanner igbinary intercept llvm memsession memtrack meta mono operator optimizer params parsekit Parse_Tree pcs phar phk PHPScript postparser PreProcessor propro raphf runkit scream session_mysql strict tcc trace uopz uploadprogress vld xdebug bloomy Judy quickhash Weakref cld fribidi gender idn intl translit unicode unicodestring binpack clips crack crack_dll crypto fann filter functional graphdat hash huffman msgpack pcsc PECL_Gen protocolbuffers rsync SPL SPL_Types stomp svm udis86 Valkyrie xhprof xrange amfext rrd shape archive bz2 cpdf Fileinfo fpdf haru id3 lzf qqwry rar rpmreader syck yaml zip bz2_filter oggvorbis openal zlib_filter bbcode colorer doublemetaphone enchant ereg jsmin markdown namazu panda pdflib ps re2 ssdeep stem sundown TextCat xdiff ApacheAccessor dio expect fam printer proctitle pthreads statgrab sync threads w32api win32ps win32ps_dll win32service yaf svn eio ev libevent swoole php_xcb tk win32std WinBinder wxwidgets ecasound ming opengl sdl xmp FliteTTS KTaglib selinux taint clucene mnogosearch solr sphinx swish lua perl python spidermonkey v8js libvirt 登録モジュール数 2016-03-01 PHPBLT #3 3 2016-02-25 時点の情報 トップページからリンクを辿って到達できる HTML ページ数をカウントしたもの
  4. 4. カテゴリ別モジュール数 2016-03-01 PHPBLT #3 4 Database 56 PHP 41 Networking 35 Tools and Utilities 24 Text 17System 15 File Formats 14 Caching 13 Images 12 Web Service 10 Internationalization 8 XML 8 File System 7 Math 6 Payment 6 Authentication 5 Console 5 Encryption 5 GUI 5 HTTP 5 Languages 5 Multimedia 5 Search Engine 5 Configuration 4 Event 4 Streams 4Structures 4Benchmarking 3Date and Time 3Mail 3Processing 3Audio 2HTML 2Security 2Logging 1Numbers 1Version Control 1Virtualization 1
  5. 5. 登録モジュール数の推移 2016-03-01 PHPBLT #3 5 4.2.0 4.3.0 4.4.0 5.0.0 5.1.0 5.2.0 5.3.0 5.4.0 5.5.0 5.6.0 7.0.0 0 50 100 150 200 250 300 350 2002/1/1 2006/1/1 2010/1/1 2014/1/1 モジュール数 "Available Releases" の情報を集計したもの。情報のない 37 モジュールを除外, stable 以外のリリースも含む PHP のリリース日は http://www.php.net/releases による
  6. 6. 月ごとのリリース数 2016-03-01 PHPBLT #3 6 0 10 20 30 40 50 60 2002/1/1 2006/1/1 2010/1/1 2014/1/1 リリース数 "Available Releases" の情報を集計したもの。情報のない 37 モジュールを除外, stable 以外のリリースも含む
  7. 7. ソースコードリポジトリ 2016-03-01 PHPBLT #3 7 svn.php.net 145 github.com 110 git.php.net 41 記載なし 35 bitbucket.org 3 code.google.com 3 その他 13 "Browse Source" の URL を集計 「記載なし」は "Browse Source" が存在しないもの
  8. 8. 最新リリースの時期 2016-03-01 PHPBLT #3 8 0 5 10 15 20 25 30 35 40 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 モジュール数 最新リリース年 (stable 以外のリリースも含む) svn.php.net github.com git.php.net リリースの無いモジュールは除外した 該当数:svn.php.net (21), github.com (2), git.php.net (3)
  9. 9. ソースコード行数 2016-03-01 PHPBLT #3 9 3 79 181 46 4 0 20 40 60 80 100 120 140 160 180 200 0 1~1,000 1,001~10,000 10,001~100,000 100,001~ http://pecl.php.net/get/* で正常に取得できた 313 モジュールを対象 拡張子 .c, .h, .cc, .cpp, .hh のファイルを find と wc で集計 PECL_Gen crack_dll win32ps_dll crips (153,710) qb (265,259) gender (368,049) wxwidgets (983,756)
  10. 10. テストファイル (phpt) 行数 2016-03-01 PHPBLT #3 10 126 3 34 81 58 11 0 20 40 60 80 100 120 140 0 1~10 10~100 100~1,000 1,001~10,000 10,001~100,000 http://pecl.php.net/get/* で正常に取得できた 313 モジュールを対象 拡張子 .phpt のファイルを find と wc で集計
  11. 11. ソース行数 vs テスト行数 2016-03-01 PHPBLT #3 11 AOP APC APM CUBRID Cairo DBDOEcasoundFileinfoFreeImageIMSJsonNet Judy KTaglibLZF Mosquitto Net_Gopher PDO PDO_CUBRID PDO_DBLIBPDO_FIREBIRD PDO_IBM PDO_INFORMIX PDO_MYSQLPDO_OCIPDO_ODBCPDO_PGSQLPDO_SQLANYWHEREPDO_USERPECL_GenRSVG SAM SPL_Types SQLiteSeasLogStatgrabTCLink WINCACHEWeakref WinBinderamfext amqp apacheaccessor apcu apcu_bcapdapfdapn archive aresaugeas bbcode bcompiler big_intbinpackbitset blencbloomybz2bz2_filter cairo_wrapper cassandraclasskit cldclucenecoin_acceptorcolorer couchbasecourierauthcrackcrack_dll crypto cvsclientcybercashcybermutcyrus date_timedazukodbasedbplusdbusdbxdio docblock dom_varimportdoublemetaphonedrizzledtrace eio enchantenv esmtp ev eventexpectfam fann ffi filter framegrabfribidifuncallfunctionalfuse gdchartgearmangeoipgeospatial gmagick gnupg graphdatgrpcgupnp haruhashhdr_histogramhidef hprosehrtimehtml_parsehtscannerhuffman ibm_db2 id3idn igbinary imagick imlib2inclued ingres inotifyintercept intl ip2locationircclientisisjsmin json json_post jsoncjsond kadm5 krb5lapacklchashleveldblibeventlibsodiumlua mailparse markdown maxdb mcrypt_filtermcvemdbtools memcachememcached memoizememprofmemsessionmemtrackmnogosearchmogilefs mongomono mqseries msgpack mysqlnd_memcache mysqlnd_ms mysqlnd_qc mysqlnd_uh ncursesnetools newtoauthocal oci8 odbtpoggvorbisopenalopendirectoryopengloperator optimizerpam pandaparadoxparams parse_treeparsekitpcspcsc pdflib pdo_4d pdo_sqlsrv pecl_http perforce perl phar phdfs phkpop3 pq proctitlepropro protocolbuffers ps pthreads pythonqqwry quickhash radius raphf rar rdkafka re2 redis riak rpmreader rrd rsync runkit saslscreamscrypt sdlselinuxshapesmbclient solr sphinxspidermonkeyspplusspread sqlsrvssdeep ssh2 statsstemstompstrict sundown svm svn swish swoolesycksynctainttcctcpwrap tdb termboxtextcattidy timezonedbtktokyo_tyranttrace translittvisiontxforwardudis86 uopz uploadprogress uri_template uuid v8js valkyrie varnish vldvpopmailwbxmlwin32pswin32ps_dllwin32servicewin32stdxattrxcommerce xdebugxdiffxhprofxmldiffxmlreaderxmlrpcixmlwriterxmmsxmpxrangexslcachexxtea yacyaconf yaf yami yaml yaryazyp zendopcache zeroconf zip zlib_filter zmq zookeeper0 5,000 10,000 15,000 20,000 25,000 30,000 35,000 40,000 45,000 50,000 0 5,000 10,000 15,000 20,000 25,000 30,000 35,000 40,000 45,000 50,000 テストファイル行数 ソースコード行数 Module Source Test PDO_SQLITE 69,642 0 SCA_SDO 54,873 1,076 clips 153,710 0 gender 368,049 392 mongodb 75,145 12,334 qb 265,259 17,246 sqlite3 87,800 706 trader 90,270 11,099 wxwidgets 983,756 0 50,000 行を超えるモジュール
  12. 12. ソース行数 vs テスト行数 2016-03-01 PHPBLT #3 12 AOP APM DBDO EcasoundFileinfo FreeImage IMS JsonNet Judy KTaglibLZF Mosquitto Net_Gopher PDOPDO_DBLIBPDO_FIREBIRD PDO_IBM PDO_INFORMIX PDO_MYSQLPDO_OCIPDO_ODBCPDO_PGSQL PDO_SQLANYWHERE PDO_USER PECL_GenRSVG SAM SPL_Types SeasLogStatgrabTCLink Weakref amfext amqp apacheaccessor apcu_bc apd apfd apn archive ares augeas bbcode bcompiler big_int binpack bitset blencbloomybz2bz2_filter cairo_wrapper classkit cld clucene coin_acceptorcolorer couchbasecourierauth crackcrack_dll crypto cvsclientcybercashcybermutcyrus date_time dazuko dbasedbplus dbus dbx dio docblock dom_varimport doublemetaphone drizzledtrace enchantenv esmtpexpectfam fann filter framegrab fribidi funcall functionalfuse gdchartgearman geoip geospatial gnupg graphdatgrpcgupnp haru hashhdr_histogram hidef hprosehrtime html_parse htscanner huffmanid3idn igbinary imlib2inclued ingres inotifyinterceptip2locationircclientisisjsmin json json_post jsonc jsond kadm5 krb5 lapack lchash leveldb libevent libsodium lua mailparse markdown maxdb mcrypt_filter mcvemdbtools memcache memcached memoize memprofmemsessionmemtrack mnogosearch mogilefs mono mqseries mysqlnd_memcache mysqlnd_uh ncursesnetools newt oauth ocal odbtpoggvorbisopenal opendirectory opengl operator optimizerpam panda paradox params parsekit pcs pcsc pdo_4d perforce perl phdfs phkpop3 pq proctitle propro protocolbuffers ps pthreads python qqwry quickhash radius raphf rdkafka re2 rpmreader rrd runkit saslscream scrypt sdlselinux shape smbclientsphinx spidermonkey spplus spreadssdeep ssh2 stomp strict sundown svm svn swish syck sync taint tcc tcpwrap tdb termbox textcattidy tk tokyo_tyrant trace tvisiontxforwardudis86 uopz uploadprogress uri_template uuid v8js valkyrie varnish vldvpopmailwbxmlwin32pswin32ps_dllwin32servicewin32std xattr xcommercexdiff xhprof xmldiff xmlreaderxmlrpci xmlwriter xmms xmp xrange xslcachexxtea yac yaconf yaml yar yazyp zeroconfzlib_filter zookeeper0 1,000 2,000 3,000 4,000 5,000 6,000 7,000 8,000 9,000 10,000 0 1,000 2,000 3,000 4,000 5,000 6,000 7,000 8,000 9,000 10,000 テストファイル行数 ソースコード行数
  13. 13. お約束 クローリングでは過剰な負荷をかけないよう注意しましょう 今回は以下のようにしました ◦ HTML ファイル 1 ページ取得ごとに 5 秒 sleep ◦ 拡張モジュール (.tar.gz) 1 モジュール取得ごとに 30 秒 sleep ちなみに ◦ http://pecl.php.net/get は robots.txt で Disarrow と記述されている 2016-03-01 PHPBLT #3 13

×