/** * * @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 = parse_url($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; } JchOptimizeLogger::debug($out, 'out'); fwrite($fp, $out); fclose($fp); } }