#!/usr/bin/php setOptions([ "timetout" => 60, "redirect" => 1, "connecttimeout" => 6 ]); while (!feof(STDIN)) { if (strlen($line = rtrim(fgets(STDIN)))) { if (list($pkg, $ver, $url) = explode("\t", $line)) { $url = new Url($url, null, 0); $skp = sprintf("%s/../build/%s-%s.skip", __DIR__, $pkg, $ver); $tgz = sprintf("%s/../build/%s-%s.tgz", __DIR__, $pkg, $ver); $ext = sprintf("%s/../public/phars/%s/%s-%s.ext.phar", __DIR__, $pkg, $pkg, $ver); if (is_file($skp)) { // skip } elseif (is_file($tgz) || is_file($ext)) { printf("%s\t%s\t%s\n", $pkg, $ver, $tgz); } else { $client->enqueue(new Request("GET", $url), function($res) use($tgz, $pkg, $ver) { $res->getBody()->toStream(fopen($tgz, "w")); printf("%s\t%s\t%s\n", $pkg, $ver, $tgz); return true; }); } } } } while (count($client)) { try { $client->send(); } catch (Exception $e) { error_log($e->getMessage()); } }