packagist.orgをクロールして、全てのpackage.jsonをダウンロードします。 ダウンロードし終わったあとでstaticなweb serverで配信すれば、packagist.orgのミラーを作ることができます。
- PHP > 5.3
- ext-curl
- ext-hash
- ext-json
- ext-zlib
- ext-PDO
- ext-pdo_sqlite
$ git clone https://github.com/hirak/packagist-crawler
$ cd packagist-crawler
$ composer install
$ php parallel.php
(...few minutes...)
$ ls cache/
p/
packages.json
- config.default.php
- config.php
このどちらかのファイルがあると、挙動を変えることができます。 修正したいときはconfig.default.phpをconfig.phpにコピーして、 config.phpの方をカスタマイズしてください。
<?php
return (object)array(
'cachedir' => __DIR__ . '/cache/',
//'cachedir' => '/usr/share/nginx/html/',
//'cachedir' => '/usr/local/apache2/htdocs/',
'packagistUrl' => 'https://packagist.org',
'maxConnections' => 4,
'lockfile' => __DIR__ . '/cache/.lock',
'expiredDb' => __DIR__ . '/cache/.expired.db
);
ダウンロードしたpackages.jsonを格納するディレクトリです。
ダウンロード元のpackagist.orgのURLです。 デフォルトではオリジンからダウンロードしますが、 既に存在する他のミラーサイトを指定することができます。
並列ダウンロードの並列数です。 増やした方が速くダウンロードできますが、 オリジンに負荷をかけるので適当なところにしてください。
ファイル更新によって古くなったjsonが記録されています。
著作権は放棄するものとします。 利用に際して制限はありませんし、作者への連絡や著作権表示なども必要ありません。 スニペット的にコードをコピーして使っても問題ありません。
CC0-1.0 (No Rights Reserved)