/** * * @param type $uri * @return type */ private function __construct($uri) { $this->oUri = clone JUri::getInstance($uri); if ($uri != 'SERVER') { $parts = JchOptimizeHelper::parseUrl($uri); $this->oUri->setScheme(!empty($parts['scheme']) ? $parts['scheme'] : null); $this->oUri->setUser(!empty($parts['user']) ? $parts['user'] : null); $this->oUri->setPass(!empty($parts['pass']) ? $parts['pass'] : null); $this->oUri->setHost(!empty($parts['host']) ? $parts['host'] : null); $this->oUri->setPort(!empty($parts['port']) ? $parts['port'] : null); $this->oUri->setPath(!empty($parts['path']) ? $parts['path'] : null); $this->oUri->setQuery(!empty($parts['query']) ? $parts['query'] : null); $this->oUri->setFragment(!empty($parts['fragment']) ? $parts['fragment'] : null); } return $this->oUri; }
/** * * @param type $url * @param array $params */ public static function postAsync($url, $params, array $posts) { foreach ($posts as $key => &$val) { if (is_array($val)) { $val = implode(',', $val); } $post_params[] = $key . '=' . urlencode($val); } $post_string = implode('&', $post_params); $parts = JchOptimizeHelper::parseUrl($url); if (isset($parts['scheme']) && $parts['scheme'] == 'https') { $protocol = 'ssl://'; $default_port = 443; } else { $protocol = ''; $default_port = 80; } $fp = @fsockopen($protocol . $parts['host'], isset($parts['port']) ? $parts['port'] : $default_port, $errno, $errstr, 1); if (!$fp) { JchOptimizeLogger::log($errno . ': ' . $errstr, $params); } else { $out = "POST " . $parts['path'] . '?' . $parts['query'] . " HTTP/1.1\r\n"; $out .= "Host: " . $parts['host'] . "\r\n"; $out .= "Content-Type: application/x-www-form-urlencoded\r\n"; $out .= "Content-Length: " . strlen($post_string) . "\r\n"; $out .= "Connection: Close\r\n\r\n"; if (isset($post_string)) { $out .= $post_string; } fwrite($fp, $out); fclose($fp); } }