<?php
// We do not need this any longer, unset for safety purposes
unset($global_db_pass);
?>
创建日志对象// We do not need this any longer, unset for safety purposes
unset($global_db_pass);
?>
<?php
// Init Log
$log = new BsmLog ('bsg');
?>
这又是一个精彩部分,创建一个共享内存对象// Init Log
$log = new BsmLog ('bsg');
?>
<?php
// Init the Shared Memory
$shm = new BsmShm;
if ($shm->shm_id) {
define ('SHM_SUPPORT', true);
}
?>
如果系统是第一次运行,则在共享内存中标记一个运行标志SHM_VAR_SYS_RUN = true(系统的constants.inc.php是常量表,里面定义了系统要使用的常量)// Init the Shared Memory
$shm = new BsmShm;
if ($shm->shm_id) {
define ('SHM_SUPPORT', true);
}
?>
<?php
if (defined ('SHM_SUPPORT') && !@$shm->get_var (SHM_VAR_SYS_RUN)) {
$shm->put_var (SHM_VAR_SYS_RUN, true);
}
?>
我写了一个Session类,也许它的效率并不很好,我只是写来玩玩……如果你觉得它的效率不行,可以使用系统Session,或者使用Sky同学的SessionD,哈哈——做个广告……if (defined ('SHM_SUPPORT') && !@$shm->get_var (SHM_VAR_SYS_RUN)) {
$shm->put_var (SHM_VAR_SYS_RUN, true);
}
?>
<?php
// Init the User Defined Session
$mSession = array ();
$sess = new BsmSession;
$sess->mSession_Start ();
?>
一长串乱七八糟的代码,只是为了获得访问者IP:// Init the User Defined Session
$mSession = array ();
$sess = new BsmSession;
$sess->mSession_Start ();
?>
<?php
// Proc clients' IP address'
if(getenv('HTTP_X_FORWARDED_FOR') != '') {
$client_ip = (!empty($_SERVER['REMOTE_ADDR']) ) ? $_SERVER['REMOTE_ADDR'] : ( (!empty($_ENV['REMOTE_ADDR']) ) ? $_ENV['REMOTE_ADDR'] : $REMOTE_ADDR);
$entries = explode(',', getenv('HTTP_X_FORWARDED_FOR'));
reset($entries);
while (list(, $entry) = each($entries)) {
$entry = trim($entry);
if (preg_match("/^([0-9]+.[0-9]+.[0-9]+.[0-9]+)/", $entry, $ip_list) ) {
$private_ip = array('/^0./', '/^127.0.0.1/', '/^192.168..*/', '/^172.((1[6-9])|(2[0-9])|(3[0-1]))..*/', '/^10..*/', '/^224..*/', '/^240..*/');
$found_ip = preg_replace($private_ip, $client_ip, $ip_list[1]);
if ($client_ip != $found_ip) {
$client_ip = $found_ip;
break;
}
}
}
}
else
{
$client_ip = (!empty($_SERVER['REMOTE_ADDR'])) ? $_SERVER['REMOTE_ADDR'] : ((!empty($_ENV['REMOTE_ADDR'])) ? $_ENV['REMOTE_ADDR'] : $REMOTE_ADDR);
}
?>
获得环境参数的Cache,并返回它的值。环境参数是什么内容要看具体做的是什么,比如它是一个普通网站,参数中可能会包括站点名称、作者、首页布局、使用的模板、几个模块、每个模块显式几行、每行显式几个图片这些值。这些值一般都是在后台中可以修改然后存入数据库中的。cache.inc.php中的obtain_config函数负责在第一次执行时把它们从数据库中取出,并放到一个可以被更快地访问到的地方,比如shm中,或者是tmpfs上的一个文件,优化它是非常有必要的,因为这批数据被使用得太频繁了。// Proc clients' IP address'
if(getenv('HTTP_X_FORWARDED_FOR') != '') {
$client_ip = (!empty($_SERVER['REMOTE_ADDR']) ) ? $_SERVER['REMOTE_ADDR'] : ( (!empty($_ENV['REMOTE_ADDR']) ) ? $_ENV['REMOTE_ADDR'] : $REMOTE_ADDR);
$entries = explode(',', getenv('HTTP_X_FORWARDED_FOR'));
reset($entries);
while (list(, $entry) = each($entries)) {
$entry = trim($entry);
if (preg_match("/^([0-9]+.[0-9]+.[0-9]+.[0-9]+)/", $entry, $ip_list) ) {
$private_ip = array('/^0./', '/^127.0.0.1/', '/^192.168..*/', '/^172.((1[6-9])|(2[0-9])|(3[0-1]))..*/', '/^10..*/', '/^224..*/', '/^240..*/');
$found_ip = preg_replace($private_ip, $client_ip, $ip_list[1]);
if ($client_ip != $found_ip) {
$client_ip = $found_ip;
break;
}
}
}
}
else
{
$client_ip = (!empty($_SERVER['REMOTE_ADDR'])) ? $_SERVER['REMOTE_ADDR'] : ((!empty($_ENV['REMOTE_ADDR'])) ? $_ENV['REMOTE_ADDR'] : $REMOTE_ADDR);
}
?>
