Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Steur <thomas.steur@googlemail.com>2014-02-11 04:23:17 +0400
committerThomas Steur <thomas.steur@googlemail.com>2014-02-11 04:23:17 +0400
commit113e403a9e5a6ccab2762fc321382b540b51f8d9 (patch)
tree90f778d5dffcad8b2540c74215a40cad100e04a3 /core/CliMulti.php
parent279a4d6978dd5ddcbb39b4e703bd6fdfb6a170b7 (diff)
refs #4610 tests for cliMulti and loads of bugfixes
Diffstat (limited to 'core/CliMulti.php')
-rw-r--r--core/CliMulti.php39
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();
}
}