<?php /** * 用于rpc服务端的header系列函数 * @author flynetcn */ class Utils_Header { private static $headers = array(); private static $cookies = array(); private static $sessionOpened = false; public static function header($string, $replace=true, $http_resp { if (PHP_SAPI == 'cli') { if ($http_response_code) { self::$headers[] = array($string, $replace, $http_response_code); } else { self::$headers[] = array($string, $replace); } } if ($http_response_code) { header($string, $replace, $http_response_code); } else { header($string, $replace); } } public static function session_start() { if (PHP_SAPI == 'cli' && !self::$sessionOpened) { //模拟session机制 if (!$_COOKIE[session_name()]) { $ip_prefix = isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? ip2long($_SERVER['HTTP_X_FORWARDED_FOR']) : rand(1, 10000); $pid_prefix = posix_getpid(); $sessid = uniqid(strval(dechex($ip_prefix)).strval(dechex($pid_prefix))); $_COOKIE[session_name()] = $sessid; session_start(); self::$cookies[] = array(session_name(), $sessid, 0, '/', DOMAIN_COOKIE); } else { session_start(); } self::$sessionOpened = true; return true; } else { return session_start(); } } public static function session_write_close() { if (self::$sessionOpened) { self::$sessionOpened = false; } $_SESSION = array(); session_write_close(); } public static function setcookie($name, $value='', $expire=0, $path='', $domain='', $secure=false, $http { if (PHP_SAPI == 'cli') { self::$cookies[] = func_get_args(); } return call_user_func_array('setcookie', func_get_args()); } public static function getSendCookies() { return self::$cookies; } public static function getSendHeaders() { return self::$headers; } public static function cleanSendCookies() { self::$cookies = array(); } public static function cleanSendHeaders() { self::$headers = array(); } }
저작권 안내: 이 글은 해당 블로거의 원본 글이므로 블로거의 허락 없이 복제할 수 없습니다.
위 내용은 PHP 서버의 [thrift] 헤더 시리즈 기능을 소개한 내용으로, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.