本文整理汇总了PHP中F3::hashCode方法的典型用法代码示例。如果您正苦于以下问题:PHP F3::hashCode方法的具体用法?PHP F3::hashCode怎么用?PHP F3::hashCode使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类F3
的用法示例。
在下文中一共展示了F3::hashCode方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: sqlCache
/**
Retrieve from cache; or save SQL query results to cache if not
previously executed
@param $_cmd string
@param $_bind mixed
@param $_id string
@param $_ttl integer
@private
**/
private static function sqlCache($_cmd, $_bind = NULL, $_id = 'DB', $_ttl = 0)
{
$_hash = 'sql.' . F3::hashCode($_cmd);
$_db =& F3::$global[$_id];
$_cached = Cache::cached($_hash);
if ($_cached && time() - $_cached['time'] < $_ttl) {
// Gather cached SQL queries for profiler
F3::$global['PROFILE'][$_id]['cache'][$_cmd]++;
// Retrieve from cache, unserialize, and restore DB variable
$_db = unserialize(gzinflate(Cache::fetch($_hash)));
} else {
self::sqlExec($_cmd, NULL, $_id);
if (!F3::$global['ERROR']) {
// Serialize, compress and cache
unset($_db['pdo'], $_db['query']);
Cache::store($_hash, gzdeflate(serialize($_db)));
}
}
}
示例2: sqlCache
/**
Retrieve from cache; or save SQL query results to cache if not
previously executed
@param $_cmd string
@param $_bind mixed
@param $_id string
@param $_ttl integer
@private
**/
private static function sqlCache($_cmd, $_bind = NULL, $_id = 'DB', $_ttl = 0)
{
$_hash = 'sql.' . F3::hashCode($_cmd);
$_db =& F3::$global[$_id];
$_cached = Cache::cached($_hash);
if ($_cached && time() - $_cached['time'] < $_ttl) {
// Gather cached SQL queries for profiler
F3::$global['PROFILE'][$_id]['cache'][$_cmd]++;
// Retrieve from cache
$_db = Cache::fetch($_hash);
} else {
self::sqlExec($_cmd, NULL, $_id);
if (!F3::$global['ERROR']) {
// Save to cache
unset($_db['pdo'], $_db['query']);
Cache::store($_hash, $_db);
}
}
}
示例3: sitemap
/**
Parse each URL recursively and generate sitemap
@param $_url string
@public
**/
public static function sitemap($_url = '/')
{
$_map =& F3::$global['SITEMAP'];
if (array_key_exists($_url, $_map) && $_map[$_url]['status'] !== NULL) {
// Already crawled
return;
}
preg_match('/^http[s]*:\\/\\/([^\\/$]+)/', $_url, $_host);
if (!empty($_host) && $_host[1] != $_SERVER['SERVER_NAME']) {
// Remote URL
$_map[$_url]['status'] = FALSE;
return;
}
F3::$global['QUIET'] = TRUE;
F3::mock('GET ' . $_url);
F3::run();
// Check if an error occurred or no HTTP response
if (F3::$global['ERROR'] || !F3::$global['RESPONSE']) {
$_map[$_url]['status'] = FALSE;
// Reset error flag for next page
unset(F3::$global['ERROR']);
return;
}
$_doc = new XMLTree('1.0', F3::$global['ENCODING']);
if ($_doc->loadHTML(F3::$global['RESPONSE'])) {
// Valid HTML; add to sitemap
if (!$_map[$_url]['level']) {
// Web root
$_map[$_url]['level'] = 0;
}
$_map[$_url]['status'] = TRUE;
$_map[$_url]['mod'] = time();
$_map[$_url]['freq'] = 0;
// Cached page
$_hash = 'url.' . F3::hashCode('GET ' . $_url);
$_cached = Cache::cached($_hash);
if ($_cached) {
$_map[$_url]['mod'] = $_cached['time'];
$_map[$_url]['freq'] = $_SERVER['REQUEST_TTL'];
}
// Parse all links
$_links = $_doc->getElementsByTagName('a');
foreach ($_links as $_link) {
$_ref = $_link->getAttribute('href');
$_rel = $_link->getAttribute('rel');
if (!$_ref || $_rel && preg_match('/nofollow/', $_rel)) {
// Don't crawl this link!
continue;
}
if (!array_key_exists($_ref, $_map)) {
$_map[$_ref] = array('level' => $_map[$_url]['level'] + 1, 'status' => NULL);
}
}
// Parse each link
array_walk(array_keys($_map), 'self::sitemap');
}
unset($_doc);
if (!$_map[$_url]['level']) {
// Finalize sitemap
$_depth = 1;
while ($_ref = current($_map)) {
// Find depest level while iterating
if (!$_ref['status']) {
// Remove remote URLs and pages with errors
unset($_map[key($_map)]);
} else {
$_depth = max($_depth, $_ref['level'] + 1);
next($_map);
}
}
// Create XML document
$_xml = simplexml_load_string('<?xml version="1.0" encoding="' . F3::$global['ENCODING'] . '"?>' . '<urlset xmlns="' . 'http://www.sitemaps.org/schemas/sitemap/0.9' . '"/>');
$_host = 'http://' . $_SERVER['SERVER_NAME'];
foreach ($_map as $_key => $_ref) {
// Add new URL
$_item = $_xml->addChild('url');
// Add URL elements
$_item->addChild('loc', $_host . $_key);
$_item->addChild('lastMod', date('c', $_ref['mod']));
$_item->addChild('changefreq', self::frequency($_ref['freq']));
$_item->addChild('priority', sprintf('%1.1f', 1 - $_ref['level'] / $_depth));
}
// Send output
F3::$global['QUIET'] = FALSE;
if (PHP_SAPI != 'cli' && !headers_sent()) {
header(F3::HTTP_Content . ': application/xhtml+xml; ' . 'charset=' . F3::$global['ENCODING']);
}
$_xml = dom_import_simplexml($_xml)->ownerDocument;
$_xml->formatOutput = TRUE;
echo $_xml->saveXML();
}
}
示例4: received
/**
Send HTTP/S request to another host; Forward headers received (if
QUIET variable is FALSE) and return content; Respect HTTP 30x
redirects if last argument is TRUE
@return mixed
@param $_pattern string
@param $_query string
@param $_reqhdrs array
@param $_follow boolean
@public
**/
public static function http($_pattern, $_query = '', $_reqhdrs = array(), $_follow = TRUE)
{
// Check if valid route pattern
list($_method, $_route) = F3::checkRoute($_pattern);
// Content divider
$_div = chr(0);
// Determine if page is in cache
$_hash = 'url.' . F3::hashCode($_pattern);
$_cached = Cache::cached($_hash);
if ($_cached) {
// Retrieve from cache
$_buffer = Cache::fetch($_hash);
$_rcvhdrs = strstr($_buffer, $_div, TRUE);
$_response = substr(strstr($_buffer, $_div), 1);
// Find out if cache is stale
$_expires = NULL;
foreach (explode(self::EOL, $_rcvhdrs) as $_hdr) {
if (preg_match('/^' . F3::HTTP_Expires . ':(.+)/', $_hdr, $_match)) {
$_expires = strtotime($_match[1]);
break;
}
}
if (!is_null($_expires) && time() < $_expires) {
// Cached page is still fresh
foreach (explode(self::EOL, $_rcvhdrs) as $_hdr) {
F3::$global['HEADERS'][] = $_hdr;
if (preg_match('/' . F3::HTTP_Content . '/', $_hdr)) {
// Forward HTTP header
header($_hdr);
}
}
return $_response;
}
}
$_url = parse_url($_route);
if (!$_url['path']) {
// Set to Web root
$_url['path'] = '/';
}
if ($_method != 'GET') {
if ($_url['query']) {
// Non-GET method; Query is distinct from URI
$_query = $_url['query'];
$_url['query'] = '';
}
} else {
if ($_query) {
// GET method; Query is integral part of URI
$_url['query'] = $_query;
$_query = '';
}
}
// Set up host name and TCP port for socket connection
if (preg_match('/https/', $_url['scheme'])) {
if (!$_url['port']) {
$_url['port'] = 443;
}
$_target = 'ssl://' . $_url['host'] . ':' . $_url['port'];
} else {
if (!$_url['port']) {
$_url['port'] = 80;
}
$_target = $_url['host'] . ':' . $_url['port'];
}
$_socket = @fsockopen($_target, $_url['port'], $_errno, $_text);
if (!$_socket) {
// Can't establish connection
trigger_error($_text);
return FALSE;
}
// Send HTTP request
fputs($_socket, $_method . ' ' . $_url['path'] . ($_url['query'] ? '?' . $_url['query'] : '') . ' ' . 'HTTP/1.0' . self::EOL . F3::HTTP_Host . ': ' . $_url['host'] . self::EOL . F3::HTTP_Agent . ': Mozilla/5.0 (' . 'compatible;' . F3::TEXT_AppName . ' ' . F3::TEXT_Version . ')' . self::EOL . ($_reqhdrs ? implode(self::EOL, $_reqhdrs) . self::EOL : '') . ($_method != 'GET' ? 'Content-Type: ' . 'application/x-www-form-urlencoded' . self::EOL . 'Content-Length: ' . strlen($_query) . self::EOL : '') . F3::HTTP_AcceptEnc . ': gzip' . self::EOL . ($_cached ? F3::HTTP_Cache . ': max-age=86400' . self::EOL : '') . F3::HTTP_Connect . ': close' . self::EOL . self::EOL . $_query . self::EOL . self::EOL);
$_found = FALSE;
$_expires = FALSE;
$_gzip = FALSE;
// Set connection timeout parameters
stream_set_blocking($_socket, TRUE);
stream_set_timeout($_socket, ini_get('default_socket_timeout'));
$_info = stream_get_meta_data($_socket);
// Get headers and response
while (!feof($_socket) && !$_info['timed_out']) {
$_response .= fgets($_socket, 4096);
// MDFK97
$_info = stream_get_meta_data($_socket);
if (!$_found) {
$_rcvhdrs = strstr($_response, self::EOL . self::EOL, TRUE);
if ($_rcvhdrs) {
$_found = TRUE;
if (PHP_SAPI != 'cli' && !headers_sent()) {
//.........这里部分代码省略.........