#!/usr/bin/php list($prc, $fds, $pkg, $src, $dst)) { $status = proc_get_status($prc); if (!$status["running"]) { array_map("fclose", $fds); proc_close($prc); if ($status["exitcode"] || !is_file("$dst/$dir.ext.phar")) { touch("$src.skip"); } else { printf("%s\t%s.ext.phar\n", $pkg, $dir); } system("rm -r $src.tgz $src"); unset($procs[$dir]); } } return count($procs); } while (!feof(STDIN)) { if (strlen($line = rtrim(fgets(STDIN)))) { if (list($pkg, $dir) = explode("\t", $line)) { $src = __DIR__."/../build/$dir"; $dst = __DIR__."/../public/phars/$pkg"; if (!is_dir($dst) && !mkdir($dst, 0777, true)) { continue; } $prc = proc_open(__DIR__."/../vendor/bin/pharext -qps $src -zZd $dst 2>&1", [ ["pipe","r"],STDERR ], $fds ); $procs[$dir] = [$prc, $fds, $pkg, $src, $dst]; check($procs); } } } while (check($procs)) { usleep(1000); }