#!/usr/bin/php -dphar.readonly=0 0; }; function work($url, $dir) { is_dir($dir) || mkdir($dir, 0777, true); require_once __DIR__."/../vendor/autoload.php"; $packager = new pharext\Packager; $packager->run(5, [ $_SERVER["argv"][0], "-qps", $url, "-Zzd", $dir ]); }; if (($sxe = simplexml_load_file("http://pecl.php.net/feeds/$what.rss"))) { foreach ($sxe->item as $item) { $url = (string) $item->link; $pkg = basename(dirname($url)); $ver = basename($url); $skp = sprintf("%s/../build/%s-%s.skip", __DIR__, $pkg, $ver); $ext = sprintf("%s/../public/phars/%s/%s-%s.ext.phar", __DIR__, $pkg, $pkg, $ver); $dir = dirname($ext); if (!is_file($skp) && !is_file($ext)) { switch ($pid = pcntl_fork()) { case -1: exit; case 0: work($url, $dir); exit; default: $pids[$pid] = compact("url", "pkg", "ver", "skp", "ext", "dir"); break; } } if (count($pids) > 5) { wait($pids); } } while (wait($pids)) ; }