PECLを数えてみた内山 雄司 @y__uti
2016-03-01 PHPBLT #3
PECLThe 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 memorizevarnish 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 ingresisis 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_ODBCPDO_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_postpecl_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 cvsclientcyrus 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 cybercashcybermut 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 htscannerigbinary 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 bloomyJudy 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 udis86Valkyrie 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 ssdeepstem sundown TextCat xdiff ApacheAccessor dio expect fam printer proctitle pthreads statgrab sync threads w32api win32pswin32ps_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 ページ数をカウントしたもの
カテゴリ別モジュール数
2016-03-01 PHPBLT #3 4
Database 56
PHP 41
Networking 35
Tools and Utilities 24
Text 17System 15File 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 5Multimedia 5Search Engine 5
Configuration 4Event 4Streams 4Structures 4Benchmarking 3Date and Time 3Mail 3Processing 3Audio 2HTML 2Security 2Logging 1Numbers 1Version Control 1Virtualization 1
登録モジュール数の推移
2016-03-01 PHPBLT #3 5
4.2.04.3.0
4.4.0
5.0.0
5.1.05.2.0
5.3.0
5.4.0
5.5.0
5.6.07.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 による
月ごとのリリース数
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 以外のリリースも含む
ソースコードリポジトリ
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" が存在しないもの
最新リリースの時期
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)
ソースコード行数
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)
テストファイル (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で集計
ソース行数 vs テスト行数
2016-03-01 PHPBLT #3 11
AOP
APC
APM
CUBRID
Cairo
DBDOEcasoundFileinfoFreeImageIMSJsonNet
Judy
KTaglibLZFMosquitto
Net_Gopher PDO
PDO_CUBRID
PDO_DBLIBPDO_FIREBIRD
PDO_IBM
PDO_INFORMIX
PDO_MYSQLPDO_OCIPDO_ODBCPDO_PGSQLPDO_SQLANYWHEREPDO_USERPECL_GenRSVG SAMSPL_Types SQLite
SeasLogStatgrabTCLink WINCACHEWeakref WinBinderamfext
amqp
apacheaccessor
apcu
apcu_bcapdapfdapn
archive
aresaugeasbbcode
bcompilerbig_intbinpackbitset
blencbloomybz2bz2_filter
cairo_wrapper
cassandraclasskitcldclucenecoin_acceptorcolorer couchbasecourierauthcrackcrack_dll
crypto
cvsclientcybercashcybermutcyrus date_timedazukodbasedbplusdbusdbxdio
docblockdom_varimportdoublemetaphonedrizzledtrace
eioenchantenv esmtp
ev eventexpectfam
fann
ffifilter
framegrabfribidifuncallfunctionalfuse gdchartgearmangeoipgeospatial
gmagick
gnupggraphdatgrpcgupnp 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 newtoauth
ocal
oci8
odbtpoggvorbisopenalopendirectoryopengloperator optimizerpam pandaparadoxparams parse_treeparsekitpcspcsc pdflib
pdo_4d
pdo_sqlsrv
pecl_http
perforce
perl
phar
phdfs phkpop3
pq
proctitlepropro
protocolbuffers
ps
pthreads
pythonqqwry quickhashradius
raphf
rar
rdkafkare2
redisriak
rpmreaderrrd rsync
runkit
saslscreamscrypt sdlselinuxshapesmbclient
solr
sphinxspidermonkeyspplusspread sqlsrvssdeep ssh2 statsstemstompstrict
sundown
svm svn
swish
swoolesycksynctainttcctcpwraptdbtermboxtextcattidy timezonedbtktokyo_tyranttrace translittvisiontxforwardudis86
uopzuploadprogress
uri_template
uuid
v8js
valkyrievarnish
vldvpopmailwbxmlwin32pswin32ps_dllwin32servicewin32stdxattrxcommerce xdebugxdiffxhprofxmldiffxmlreaderxmlrpcixmlwriterxmmsxmpxrangexslcachexxtea yacyaconf
yaf
yami
yaml
yaryazyp zendopcachezeroconf
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 行を超えるモジュール
ソース行数 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
apacheaccessorapcu_bc
apdapfd
apn
archive
aresaugeas
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
framegrabfribidi funcall
functionalfuse gdchartgearmangeoip
geospatial
gnupg
graphdatgrpcgupnp haru
hashhdr_histogram
hidefhprosehrtime
html_parsehtscanner huffmanid3idn
igbinary
imlib2inclued
ingres
inotifyinterceptip2locationircclientisis
jsmin
json
json_post
jsoncjsond
kadm5krb5
lapack
lchash
leveldb
libevent
libsodiumlua
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 parsekitpcs
pcsc
pdo_4d
perforce
perl
phdfsphkpop3
pq
proctitlepropro
protocolbuffers
ps
pthreads
pythonqqwry quickhash
radius
raphfrdkafka
re2
rpmreader
rrd
runkit
saslscream scrypt sdlselinuxshape
smbclientsphinxspidermonkey
spplus spreadssdeep ssh2
stompstrict
sundown
svm
svn
swish
sycksync
tainttcc
tcpwrap
tdb
termbox textcattidy tk tokyo_tyrant
trace
tvisiontxforwardudis86
uopz
uploadprogress
uri_template
uuid
v8js
valkyrie
varnish
vldvpopmailwbxmlwin32pswin32ps_dllwin32servicewin32stdxattr
xcommercexdiff
xhprof xmldiff
xmlreaderxmlrpcixmlwriter
xmms
xmpxrange
xslcachexxtea
yacyaconf
yaml
yar
yazypzeroconfzlib_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
テストファイル行数
ソースコード行数
お約束クローリングでは過剰な負荷をかけないよう注意しましょう
今回は以下のようにしました◦ HTML ファイル 1 ページ取得ごとに 5 秒 sleep
◦ 拡張モジュール (.tar.gz) 1 モジュール取得ごとに 30 秒 sleep
ちなみに◦ http://pecl.php.net/get は robots.txt で Disarrowと記述されている
2016-03-01 PHPBLT #3 13
Top Related