diff options
author | Thomas Steur <thomas.steur@googlemail.com> | 2014-02-11 04:23:17 +0400 |
---|---|---|
committer | Thomas Steur <thomas.steur@googlemail.com> | 2014-02-11 04:23:17 +0400 |
commit | 113e403a9e5a6ccab2762fc321382b540b51f8d9 (patch) | |
tree | 90f778d5dffcad8b2540c74215a40cad100e04a3 /core/CliMulti.php | |
parent | 279a4d6978dd5ddcbb39b4e703bd6fdfb6a170b7 (diff) |
refs #4610 tests for cliMulti and loads of bugfixes
Diffstat (limited to 'core/CliMulti.php')
-rw-r--r-- | core/CliMulti.php | 39 |
1 files changed, 26 insertions, 13 deletions
diff --git a/core/CliMulti.php b/core/CliMulti.php index d4c08f38b5..9b607d6fa5 100644 --- a/core/CliMulti.php +++ b/core/CliMulti.php @@ -7,13 +7,13 @@ */ namespace Piwik; -use Piwik\CliMulti\Lock; +use Piwik\CliMulti\Pid; use Piwik\CliMulti\Output; class CliMulti { /** - * @var \Piwik\CliMulti\Lock[] + * @var \Piwik\CliMulti\Pid[] */ private $pids = array(); @@ -22,7 +22,7 @@ class CliMulti { */ private $outputs = array(); - public function request($piwikUrls) + public function request(array $piwikUrls) { $this->start($piwikUrls); @@ -45,11 +45,11 @@ class CliMulti { $params = array('output' => $output, 'pid' => $pid); $command = $this->buildCommand($url, $params); - $appendix = $this->supportsAsync() ? ' &' : ''; + $appendix = $this->supportsAsync() ? ' > /dev/null 2>&1 &' : ''; shell_exec($command . $appendix); - $this->pids[] = new Lock($pid); + $this->pids[] = new Pid($pid); $this->outputs[] = new Output($output); } } @@ -57,10 +57,17 @@ class CliMulti { private function buildCommand($aUrl, $additionalParams = array()) { $url = @parse_url($aUrl); - $query = $url['query']; + $query = ''; + + if (!empty($url['query'])) { + $query .= $url['query']; + } if (!empty($additionalParams)) { - $query .= '&' . http_build_query($additionalParams); + if (!empty($query)) { + $query .= '&'; + } + $query .= http_build_query($additionalParams); } $command = 'php ' . PIWIK_INCLUDE_PATH . '/core/CliMulti/run.php -- ' . escapeshellarg($query); @@ -68,13 +75,12 @@ class CliMulti { return $command; } - private function getResponse($urls) + private function getResponse() { $response = array(); - foreach ($this->outputs as $index => $output) { - $url = $urls[$index]; - $response[$url] = $output->get(); + foreach ($this->outputs as $output) { + $response[] = $output->get(); } return $response; @@ -83,7 +89,11 @@ class CliMulti { private function isFinished() { foreach ($this->pids as $index => $pid) { - if ($pid->isLocked() && !$this->outputs[$index]->exists()) { + if (!$pid->hasStarted()) { + return false; + } + + if ($pid->isRunning() && !$this->outputs[$index]->exists()) { return false; } } @@ -104,12 +114,15 @@ class CliMulti { private function cleanup() { foreach ($this->pids as $pid) { - $pid->removeLock(); + $pid->finishProcess(); } foreach ($this->outputs as $output) { $output->destroy(); } + + $this->pids = array(); + $this->outputs = array(); } } |