open() public method

Connects the socket.
public open ( )
    public function getAiravataClient()
    {
        $transport = new TSocket($this->airavataServerHost, $this->airavataServerPort);
        $protocol = new TBinaryProtocol($transport);
	$transport->open();
        return new AiravataClient($protocol);
    }
Beispiel #2
0
 public function __get($name)
 {
     if (isset($this->services[$name])) {
         if (is_string($this->services[$name])) {
             if (isset($this->service_config[$name])) {
                 $config = $this->service_config[$name];
                 if (empty($config['send_timeout'])) {
                     $config['send_timeout'] = $this->send_timeout;
                 }
                 if (empty($config['recv_timeout'])) {
                     $config['recv_timeout'] = $this->recv_timeout;
                 }
                 $transport = new TSocket($config['server_host'], $config['server_port']);
                 $transport->setSendTimeout($config['send_timeout'] * 1000);
                 $transport->setRecvTimeout($config['recv_timeout'] * 1000);
                 $transport->open();
                 $protocol = new TBinaryProtocol(new TBufferedTransport($transport));
                 $class = $this->services[$name];
                 $this->services[$name] = new $class($protocol);
             } else {
                 $transport = new TSocket($this->server_host, $this->server_port);
                 $transport->setSendTimeout($this->send_timeout * 1000);
                 $transport->setRecvTimeout($this->recv_timeout * 1000);
                 $transport->open();
                 $protocol = new TBinaryProtocol(new TBufferedTransport($transport));
                 $class = $this->services[$name];
                 $this->services[$name] = new $class($protocol);
             }
         }
         return $this->services[$name];
     } else {
         throw new Exception('Service Not Defined');
     }
 }
Beispiel #3
0
function hive_check($hive_host,$hive_port,$hive_send_timeout,$hive_recv_timeout) {
	$shell_ret=0;

	try{
		$transport = new TSocket($hive_host,$hive_port);
		$transport->setSendTimeout($hive_send_timeout);
		$transport->setRecvTimeout($hive_recv_timeout);
		$protocol = new TBinaryProtocol($transport);
		$client = new ThriftHiveClient($protocol);
		$transport->open();
		$client->execute('show databases');
		//var_dump($client->fetchAll());
	}catch(Exception $e){
		$shell_ret=1;
	}

	$transport->close();
	return $shell_ret;
}
Beispiel #4
0
 } else {
     $ip = $_GET['ip'];
     if ($handle = opendir('./hadoop')) {
         $i = 0;
         while (FALSE !== ($file = readdir($handle))) {
             if ($file != "." && $file != "..") {
                 $arr[$i] = $file;
                 $i++;
             }
         }
         closedir($handle);
     }
     $transport = new TSocket($ip, 30050);
     $protocol = new TBinaryProtocol($transport);
     #$client = new EasyHadoopClient($protocol);
     $transport->open();
     $install->MakeDir($protocol);
     foreach ($arr as $key => $value) {
         $filename = "/home/hadoop/" . $value;
         $fp = fopen("./hadoop/" . $value, "rb");
         while (!feof($fp)) {
             $content .= fread($fp, 1024);
         }
         fclose($fp);
         $str = $install->PushFile($filename, $content, $protocol);
         unset($content);
         sleep(1);
     }
     $transport->close();
     echo "<script>alert('" . $lang['pushComplete'] . "'); this.location='InstallManager.php?action=Install&ip=" . $ip . "';</script>";
 }
Beispiel #5
0
 /**
  * Connects the socket by iterating through all the servers in the pool
  * and trying to find one that works.
  */
 public function open()
 {
     // Check if we want order randomization
     if ($this->randomize_) {
         shuffle($this->servers_);
     }
     // Count servers to identify the "last" one
     $numServers = count($this->servers_);
     for ($i = 0; $i < $numServers; ++$i) {
         // This extracts the $host and $port variables
         extract($this->servers_[$i]);
         // Check APC cache for a record of this server being down
         $failtimeKey = 'thrift_failtime:' . $host . ':' . $port . '~';
         // Cache miss? Assume it's OK
         $lastFailtime = apc_fetch($failtimeKey);
         if ($lastFailtime === FALSE) {
             $lastFailtime = 0;
         }
         $retryIntervalPassed = FALSE;
         // Cache hit...make sure enough the retry interval has elapsed
         if ($lastFailtime > 0) {
             $elapsed = time() - $lastFailtime;
             if ($elapsed > $this->retryInterval_) {
                 $retryIntervalPassed = TRUE;
                 if ($this->debug_) {
                     call_user_func($this->debugHandler_, 'TSocketPool: retryInterval ' . '(' . $this->retryInterval_ . ') ' . 'has passed for host ' . $host . ':' . $port);
                 }
             }
         }
         // Only connect if not in the middle of a fail interval, OR if this
         // is the LAST server we are trying, just hammer away on it
         $isLastServer = FALSE;
         if ($this->alwaysTryLast_) {
             $isLastServer = $i == $numServers - 1;
         }
         if ($lastFailtime === 0 || $isLastServer || $lastFailtime > 0 && $retryIntervalPassed) {
             // Set underlying TSocket params to this one
             $this->host_ = $host;
             $this->port_ = $port;
             // Try up to numRetries_ connections per server
             for ($attempt = 0; $attempt < $this->numRetries_; $attempt++) {
                 try {
                     // Use the underlying TSocket open function
                     parent::open();
                     // Only clear the failure counts if required to do so
                     if ($lastFailtime > 0) {
                         apc_store($failtimeKey, 0);
                     }
                     // Successful connection, return now
                     return;
                 } catch (TException $tx) {
                     // Connection failed
                 }
             }
             // Mark failure of this host in the cache
             $consecfailsKey = 'thrift_consecfails:' . $host . ':' . $port . '~';
             // Ignore cache misses
             $consecfails = apc_fetch($consecfailsKey);
             if ($consecfails === FALSE) {
                 $consecfails = 0;
             }
             // Increment by one
             $consecfails++;
             // Log and cache this failure
             if ($consecfails >= $this->maxConsecutiveFailures_) {
                 if ($this->debug_) {
                     call_user_func($this->debugHandler_, 'TSocketPool: marking ' . $host . ':' . $port . ' as down for ' . $this->retryInterval_ . ' secs ' . 'after ' . $consecfails . ' failed attempts.');
                 }
                 // Store the failure time
                 apc_store($failtimeKey, time());
                 // Clear the count of consecutive failures
                 apc_store($consecfailsKey, 0);
             } else {
                 apc_store($consecfailsKey, $consecfails);
             }
         }
     }
     // Holy shit we failed them all. The system is totally ill!
     $error = 'TSocketPool: All hosts in pool are down. ';
     $hosts = array();
     foreach ($this->servers_ as $server) {
         $hosts[] = $server['host'] . ':' . $server['port'];
     }
     $hostlist = implode(',', $hosts);
     $error .= '(' . $hostlist . ')';
     if ($this->debug_) {
         call_user_func($this->debugHandler_, $error);
     }
     throw new TException($error);
 }
Beispiel #6
0
 public function download($link, $logLink = null, $logFilename = "", Serie $Serie = null)
 {
     if (strpos($link, "linksafe.")) {
         $newLocation = get_headers($link, 1);
         $links = $newLocation["Location"];
         $link = null;
         if (is_array($links)) {
             foreach ($links as $k => $l) {
                 if (stripos($l, "https") === 0) {
                     $link = $links[$k];
                 }
             }
             if ($link == null) {
                 $link = $links[0];
             }
         } else {
             $link = $links;
         }
     }
     if (strpos($link, "safeurl.")) {
         $newLocation = get_headers($link, 1);
         if (isset($newLocation["Location"])) {
             $link = $newLocation["Location"][0];
         } else {
             $contentWithLink = file_get_contents($link);
             preg_match_all("/(https:\\/\\/rapidshare[a-zA-Z0-9\\.\\-\\/_#+\\|!]*)/", $contentWithLink, $links);
             $links = array_unique($links[1]);
             $link = $links[0];
             $ex = explode("|", $link);
             $ex[0] = str_replace("/#!download", "/files/", $ex[0]);
             $link = $ex[0] . $ex[2] . "/" . $ex[3];
         }
     }
     if (strpos($link, "canhaz.")) {
         $newLocation = get_headers($link, 1);
         $link = $newLocation["Location"];
         $contentWithLink = file_get_contents($link);
         preg_match_all("/(http:\\/\\/rapidshare[a-zA-Z0-9\\.\\-\\/_#+]*)/", $contentWithLink, $links);
         $links = array_unique($links[1]);
         $link = $links[0];
     }
     $linkOld = $link;
     if ($this->A("JDLinkParser") != "") {
         $C = $this->A("JDLinkParser");
         $C = new $C();
         $link = $C->parse($link, $this->A("JDLinkParserUser"), $this->A("JDLinkParserPassword"));
     }
     if ($this->A("JDDLType") == "4") {
         if ($logFilename == "") {
             $info = get_headers($link, 1);
             if ($info !== false) {
                 preg_match("/filename=\"(.*)\"/ismU", $info["Content-Disposition"], $matches);
                 if (isset($matches[1])) {
                     $logFilename = $matches[1];
                 }
             }
         }
         if ($logFilename == "") {
             $logFilename = basename($link);
         }
         $DL = anyC::getFirst("Incoming", "IncomingUseForDownloads", "1");
         $size = $this->filesize($link);
         if ($size < 10 * 1024 * 1024) {
             throw new Exception("File size too small");
         }
         $id = $this->logDownload($logLink, $linkOld, $logFilename, $size, $Serie, true);
         file_put_contents($this->A("JDWgetFilesDir") . "/{$id}.temp", "-o wgetDL_" . str_pad($id, 5, "0", STR_PAD_LEFT) . ".log -O " . rtrim($DL->A("IncomingDir"), "/") . "/" . str_replace(" ", ".", basename($logFilename)) . "." . Util::ext($link) . " {$link}");
         rename($this->A("JDWgetFilesDir") . "/{$id}.temp", $this->A("JDWgetFilesDir") . "/{$id}.dl");
         chmod($this->A("JDWgetFilesDir") . "/{$id}.dl", 0666);
         return true;
     }
     if ($this->A("JDDLType") == "0") {
         Util::PostToHost($this->A("JDHost"), $this->A("JDPort"), "/link_adder.tmpl", "none", "do=Add&addlinks=" . urlencode($link), $this->A("JDUser"), $this->A("JDPassword"));
     }
     if ($this->A("JDDLType") == "1") {
         $xml = Util::PostToHost($this->A("JDHost"), $this->A("JDPort"), "/cgi-bin/Qdownload/DS_Login.cgi", "none", "user="******"JDUser") . "&pwd=" . urlencode(base64_encode($this->A("JDPassword"))) . "&admin=1");
         $xml = new SimpleXMLElement(substr($xml, strpos($xml, "<?xml ")));
         $data = Util::PostToHost($this->A("JDHost"), $this->A("JDPort"), "/cgi-bin/Qdownload/DS_Task_Option.cgi", "none", "url=" . urlencode($link) . "&todo=add_rs&type=http_ftp&acc_id=1&user=&pwd=&sid=" . $xml->authSid . "&ver=2.0");
         $xml = new SimpleXMLElement(substr($data, strpos($data, "<?xml ")));
         if ($xml->Result . "" == "success") {
             $this->logDownload($logLink, $link, $logFilename, 0, $Serie);
         }
     }
     if ($this->A("JDDLType") == "2") {
         $content = file_get_contents("http://" . $this->A("JDHost") . ":" . $this->A("JDPort") . "/action/add/links/grabber0/start1/{$link}");
         if (strpos($content, "Link(s) added. (\"{$link}\"") !== false and $logLink != null) {
             $this->logDownload($logLink, $link, $logFilename, 0, $Serie);
         }
     }
     if ($this->A("JDDLType") == "3") {
         $GLOBALS['THRIFT_ROOT'] = Util::getRootPath() . "ubiquitous/Thrift";
         require_once $GLOBALS['THRIFT_ROOT'] . '/Thrift.php';
         require_once $GLOBALS['THRIFT_ROOT'] . '/transport/TTransport.php';
         require_once $GLOBALS['THRIFT_ROOT'] . '/transport/TSocket.php';
         require_once $GLOBALS['THRIFT_ROOT'] . '/protocol/TBinaryProtocol.php';
         require_once $GLOBALS['THRIFT_ROOT'] . '/transport/TFramedTransport.php';
         require_once $GLOBALS['THRIFT_ROOT'] . '/transport/TBufferedTransport.php';
         require_once $GLOBALS['THRIFT_ROOT'] . '/packages/pyload/Pyload.php';
         require_once $GLOBALS['THRIFT_ROOT'] . '/packages/pyload/pyload_types.php';
         $transport = new TSocket($this->A("JDHost"), $this->A("JDPort") * 1);
         $transport->open();
         $protocol = new TBinaryProtocol($transport);
         $client = new PyloadClient($protocol);
         $client->login($this->A("JDUser"), $this->A("JDPassword"));
         #echo $client->getServerVersion();
         #echo "<br />";
         $client->addPackage("trinityDB", array($link), 1);
         #Print 'result = ' . $result;
         $transport->close();
     }
 }
Beispiel #7
0
 /**
  * Connects the socket by iterating through all the servers in the pool
  * and trying to find one that:
  * 1. is not marked down after consecutive failures
  * 2. can really be connected to
  *
  * @return bool  false: any IP in the pool failed to connect before returning
  *               true: no failures
  */
 public function open()
 {
     // Check if we want order randomization
     if ($this->randomize_) {
         // warning: don't use shuffle here because it leads to uneven
         // load distribution
         $n = count($this->servers_);
         $s = $this->servers_;
         for ($i = 1; $i < $n; $i++) {
             $j = mt_rand(0, $i);
             $tmp = $s[$i];
             $s[$i] = $s[$j];
             $s[$j] = $tmp;
         }
         $this->servers_ = $s;
     }
     // Count servers to identify the "last" one
     $numServers = count($this->servers_);
     $has_conn_errors = false;
     $fail_reason = array();
     // reasons of conn failures
     for ($i = 0; $i < $numServers; ++$i) {
         // host port is stored as an array
         list($host, $port) = $this->servers_[$i];
         $failtimeKey = TSocketPool::getAPCFailtimeKey($host, $port);
         // Cache miss? Assume it's OK
         $lastFailtime = $this->apcFetch($failtimeKey);
         $this->apcLog("TSocketPool: host {$host}:{$port} last fail time: " . $lastFailtime);
         if ($lastFailtime === FALSE) {
             $lastFailtime = 0;
         }
         $retryIntervalPassed = FALSE;
         // Cache hit...make sure enough the retry interval has elapsed
         if ($lastFailtime > 0) {
             $elapsed = time() - $lastFailtime;
             if ($elapsed > $this->retryInterval_) {
                 $retryIntervalPassed = TRUE;
                 if ($this->debug_) {
                     call_user_func($this->debugHandler_, 'TSocketPool: retryInterval ' . '(' . $this->retryInterval_ . ') ' . 'has passed for host ' . $host . ':' . $port);
                 }
             }
         }
         // Only connect if not in the middle of a fail interval, OR if this
         // is the LAST server we are trying, just hammer away on it
         $isLastServer = FALSE;
         if ($this->alwaysTryLast_) {
             $isLastServer = $i == $numServers - 1;
         }
         if ($lastFailtime === 0 || $isLastServer || $lastFailtime > 0 && $retryIntervalPassed) {
             // Set underlying TSocket params to this one
             // fsockopen requires IPv6 addresses be bracet enclosed
             $this->host_ = $host;
             $this->port_ = $port;
             // Try up to numRetries_ connections per server
             for ($attempt = 0; $attempt < $this->numRetries_; $attempt++) {
                 try {
                     // Use the underlying TSocket open function
                     parent::open();
                     // Only clear the failure counts if required to do so
                     if ($lastFailtime > 0) {
                         $this->apcStore($failtimeKey, 0);
                     }
                     // Successful connection, return now
                     return !$has_conn_errors;
                 } catch (TException $tx) {
                     // Connection failed
                     // keep the reason for the last try
                     $errstr = $this->getErrStr();
                     $errno = $this->getErrNo();
                     if ($errstr !== null || $errno !== null) {
                         $fail_reason[$i] = '(' . $errstr . '[' . $errno . '])';
                     } else {
                         $fail_reason[$i] = '(?)';
                     }
                 }
             }
             // For transient errors (like Resource temporarily unavailable),
             // we might want not to cache the failure.
             if ($this->alwaysRetryForTransientFailure_ && $this->isTransientConnectFailure($this->getErrNo())) {
                 continue;
             }
             $has_conn_errors = $this->recordFailure($host, $port, $this->maxConsecutiveFailures_, $this->retryInterval_, $this->debug_ ? $this->debugHandler_ : null);
         } else {
             $fail_reason[$i] = '(cached-down)';
         }
     }
     // Holy shit we failed them all. The system is totally ill!
     $error = 'TSocketPool: All hosts in pool are down. ';
     $hosts = array();
     foreach ($this->servers_ as $i => $server) {
         // array(host, port) (reasons, if exist)
         list($host, $port) = $server;
         if (ip_is_valid($host)) {
             $host = IPAddress($host)->forURL();
         }
         $h = $host . ':' . $port;
         if (isset($fail_reason[$i])) {
             $h .= $fail_reason[$i];
         }
         $hosts[] = $h;
     }
     $hostlist = implode(',', $hosts);
     $error .= '(' . $hostlist . ')';
     if ($this->debug_) {
         call_user_func($this->debugHandler_, $error);
     }
     throw new TTransportException($error);
 }
Beispiel #8
0
 public function open()
 {
     if (\hacklib_cast_as_boolean($this->randomize_)) {
         $n = count($this->servers_);
         $s = $this->servers_;
         for ($i = 1; $i < $n; $i++) {
             $j = mt_rand(0, $i);
             $tmp = $s[$i];
             $s[$i] = $s[$j];
             $s[$j] = $tmp;
         }
         $this->servers_ = $s;
     }
     $numServers = count($this->servers_);
     $has_conn_errors = false;
     $fail_reason = array();
     for ($i = 0; $i < $numServers; ++$i) {
         list($host, $port) = $this->servers_[$i];
         $failtimeKey = TSocketPool::getAPCFailtimeKey($host, $port);
         $lastFailtime = (int) $this->apcFetch($failtimeKey);
         $this->apcLog("TSocketPool: host {$host}:{$port} last fail time: " . $lastFailtime);
         $retryIntervalPassed = false;
         if ($lastFailtime > 0) {
             $elapsed = time() - $lastFailtime;
             if ($elapsed > $this->retryInterval_) {
                 $retryIntervalPassed = true;
                 if (\hacklib_cast_as_boolean($this->debug_) && $this->debugHandler_ !== null) {
                     $dh = $this->debugHandler_;
                     $dh('TSocketPool: retryInterval ' . '(' . $this->retryInterval_ . ') ' . 'has passed for host ' . $host . ':' . $port);
                 }
             }
         }
         $isLastServer = false;
         if (\hacklib_cast_as_boolean($this->alwaysTryLast_)) {
             $isLastServer = \hacklib_equals($i, $numServers - 1);
         }
         if ($lastFailtime === 0 || \hacklib_cast_as_boolean($isLastServer) || $lastFailtime > 0 && \hacklib_cast_as_boolean($retryIntervalPassed)) {
             $this->host_ = $host;
             $this->port_ = $port;
             for ($attempt = 0; $attempt < $this->numRetries_; $attempt++) {
                 try {
                     parent::open();
                     if ($lastFailtime > 0) {
                         $this->apcStore($failtimeKey, 0);
                     }
                     return;
                 } catch (TException $tx) {
                     $errstr = $this->getErrStr();
                     $errno = $this->getErrNo();
                     if ($errstr !== null || $errno !== null) {
                         $fail_reason[$i] = '(' . $errstr . '[' . $errno . '])';
                     } else {
                         $fail_reason[$i] = '(?)';
                     }
                 }
             }
             if (\hacklib_cast_as_boolean($this->alwaysRetryForTransientFailure_) && \hacklib_cast_as_boolean($this->isTransientConnectFailure($this->getErrNo()))) {
                 continue;
             }
             $dh = \hacklib_cast_as_boolean($this->debug_) ? $this->debugHandler_ : null;
             $has_conn_errors = $this->recordFailure($host, $port, $this->maxConsecutiveFailures_, $this->retryInterval_, $dh);
         } else {
             $fail_reason[$i] = '(cached-down)';
         }
     }
     $error = 'TSocketPool: All hosts in pool are down. ';
     $hosts = array();
     foreach ($this->servers_ as $i => $server) {
         list($host, $port) = $server;
         $h = $host . ':' . $port;
         if (\hacklib_cast_as_boolean(array_key_exists($i, $fail_reason))) {
             $h .= (string) $fail_reason[$i];
         }
         $hosts[] = $h;
     }
     $hostlist = implode(',', $hosts);
     $error .= '(' . $hostlist . ')';
     if (\hacklib_cast_as_boolean($this->debug_) && $this->debugHandler_ !== null) {
         $dh = $this->debugHandler_;
         $dh($error);
     }
     throw new TTransportException($error);
 }