May 14

Linux修改时间和日期的方法 不指定

空城 , 2010/05/14 14:22 , 技术 » linux , 评论(0) , 引用(0) , 阅读(167) , Via 本站原创
Linux下的时间分为两种,系统时间与硬件时间。我们一般看到的时间就是系统时间,比如现在是11:45 AM。硬件时间指的是主板上CMOS中的时间,这两个时间并不是总是同步的,一般情况下大约11分钟同步一次。

  Linux系统启动时,从CMOS中读取当前时间,作为系统时间,从此以后系统时间独立tick,此时如果你用date命令修改了系统时间,硬件时间是不受影响的,就是说如果此时关机,下次的系统时间还是不对。要想将系统时间保存到硬件时间,可以是用hwclock 或者clock命令,hwclock就是hardware clock的意思。

  一个完整的修改linux系统时间的过程如下所示:

  注意先改日期,再改时间

  # date -s 20091218 将当前日期改为2009-12-18

  # date -s 12:21:00 将当前系统时间改为12:21:00

  # clock -w 将当前系统时间保存到硬件时间
Apr 22
discuz7.2默认为一个精简IP库,如果要使用纯真数据库,得先把ipdata/tinyipdata.dat,删除或改名。然后上传纯真数据库到ipdata/wry.dat。他使用了三个函数来完成IP库查询。我现在主要要连接纯真数据库查询ip的功能。所以就把他的判断函数合并了一下,改成了一个函数。

<?php

$ip=$_SERVER['REMOTE_ADDR'];
//测试1
echo convertip($ip).'<br />';
//测试2
echo convertip('123.114.33.77');

function convertip($ip) {
  if(!preg_match("/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/", $ip)) return 'Invalid IP Address';

  $iparray = explode('.', $ip);

  if($iparray[0] == 10 || $iparray[0] == 127 || ($iparray[0] == 192 && $iparray[1] == 168) || ($iparray[0] == 172 && ($iparray[1] >= 16 && $iparray[1] <= 31))) {
    return 'LAN';
  } elseif($iparray[0] > 255 || $iparray[1] > 255 || $iparray[2] > 255 || $iparray[3] > 255) {
    return 'Invalid IP Address';
  }

  if(!$fd = @fopen('QQWry.Dat', 'rb')) {
    return 'Invalid IP data file';
  }

  $ip = explode('.', $ip);
  $ipNum = $ip[0] * 16777216 + $ip[1] * 65536 + $ip[2] * 256 + $ip[3];

  if(!($DataBegin = fread($fd, 4)) || !($DataEnd = fread($fd, 4)) ) return;
  @$ipbegin = implode('', unpack('L', $DataBegin));
  if($ipbegin < 0) $ipbegin += pow(2, 32);
  @$ipend = implode('', unpack('L', $DataEnd));
  if($ipend < 0) $ipend += pow(2, 32);
  $ipAllNum = ($ipend - $ipbegin) / 7 + 1;

  $BeginNum = $ip2num = $ip1num = 0;
  $ipAddr1 = $ipAddr2 = '';
  $EndNum = $ipAllNum;

  while($ip1num > $ipNum || $ip2num < $ipNum) {
    $Middle= intval(($EndNum + $BeginNum) / 2);

    fseek($fd, $ipbegin + 7 * $Middle);
    $ipData1 = fread($fd, 4);
    if(strlen($ipData1) < 4) {
      fclose($fd);
      return 'System Error';
    }
    $ip1num = implode('', unpack('L', $ipData1));
    if($ip1num < 0) $ip1num += pow(2, 32);

    if($ip1num > $ipNum) {
      $EndNum = $Middle;
      continue;
    }

    $DataSeek = fread($fd, 3);
    if(strlen($DataSeek) < 3) {
      fclose($fd);
      return 'System Error';
    }
    $DataSeek = implode('', unpack('L', $DataSeek.chr(0)));
    fseek($fd, $DataSeek);
    $ipData2 = fread($fd, 4);
    if(strlen($ipData2) < 4) {
      fclose($fd);
      return 'System Error';
    }
    $ip2num = implode('', unpack('L', $ipData2));
    if($ip2num < 0) $ip2num += pow(2, 32);

    if($ip2num < $ipNum) {
      if($Middle == $BeginNum) {
        fclose($fd);
        return 'Unknown';
      }
      $BeginNum = $Middle;
    }
  }

  $ipFlag = fread($fd, 1);
  if($ipFlag == chr(1)) {
    $ipSeek = fread($fd, 3);
    if(strlen($ipSeek) < 3) {
      fclose($fd);
      return 'System Error';
    }
    $ipSeek = implode('', unpack('L', $ipSeek.chr(0)));
    fseek($fd, $ipSeek);
    $ipFlag = fread($fd, 1);
  }

  if($ipFlag == chr(2)) {
    $AddrSeek = fread($fd, 3);
    if(strlen($AddrSeek) < 3) {
      fclose($fd);
      return 'System Error';
    }
    $ipFlag = fread($fd, 1);
    if($ipFlag == chr(2)) {
      $AddrSeek2 = fread($fd, 3);
      if(strlen($AddrSeek2) < 3) {
        fclose($fd);
        return 'System Error';
      }
      $AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));
      fseek($fd, $AddrSeek2);
    } else {
      fseek($fd, -1, SEEK_CUR);
    }

    while(($char = fread($fd, 1)) != chr(0))
    $ipAddr2 .= $char;

    $AddrSeek = implode('', unpack('L', $AddrSeek.chr(0)));
    fseek($fd, $AddrSeek);

    while(($char = fread($fd, 1)) != chr(0))
    $ipAddr1 .= $char;
  } else {
    fseek($fd, -1, SEEK_CUR);
    while(($char = fread($fd, 1)) != chr(0))
    $ipAddr1 .= $char;

    $ipFlag = fread($fd, 1);
    if($ipFlag == chr(2)) {
      $AddrSeek2 = fread($fd, 3);
      if(strlen($AddrSeek2) < 3) {
        fclose($fd);
        return 'System Error';
      }
      $AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));
      fseek($fd, $AddrSeek2);
    } else {
      fseek($fd, -1, SEEK_CUR);
    }
    while(($char = fread($fd, 1)) != chr(0))
    $ipAddr2 .= $char;
  }
  fclose($fd);

  if(preg_match('/http/i', $ipAddr2)) {
    $ipAddr2 = '';
  }
  $ipaddr = "$ipAddr1 $ipAddr2";
  $ipaddr = preg_replace('/CZ88\.NET/is', '', $ipaddr);
  $ipaddr = preg_replace('/^\s*/is', '', $ipaddr);
  $ipaddr = preg_replace('/\s*$/is', '', $ipaddr);
  if(preg_match('/http/i', $ipaddr) || $ipaddr == '') {
    $ipaddr = 'Unknown';
  }

  return $ipaddr;
}


?>
Tags: , , ,
Apr 3
一般情况下用 iconv,只有当遇到无法确定原编码是何种编码,或者iconv转化后无法正常显示时才用mb_convert_encoding 函数.

注意:
mb_convert_encoding把在utf8可编码的字符而在gbk中不可编码的字符都转成了\0x00\0x80

在 php.ini里将; extension=php_mbstring.dll 前面的 ; 去掉
mb_convert_encoding 可以指定多种输入编码,它会根据内容自动识别,但是执行效率比iconv差太多;
Jan 22

一个简单的分页函数 不指定

空城 , 2010/01/22 07:43 , 个人原创 , 评论(0) , 引用(0) , 阅读(192) , Via 本站原创

function page($offset=5){
  global $l_dpcms_fore,$actionurl,$total_num,$maxpage,$page;

  if(empty($total_num) || $page>$maxpage) return;

  $str='';
  if($page>1){
    $str.='<a href="'.$actionurl.'">'.$l_dpcms_fore['home'].'</a>';
    $str.='<a href="'.$actionurl.'&page='.($page-1).'">'.$l_dpcms_fore['prev'].'</a>';
  }

  $i= $page>$offset ? $page-$offset : 1 ;
  $i_end= ($page+$offset)>$maxpage ? $maxpage  : $page+$offset ;

  for($i;$i<=$i_end;$i++){
    if($page==$i) $str.='<b>'.$i.'</b>';
    else $str.='<a href="'.$actionurl.'&page='.$i.'">'.$i.'</a>';
  }
  
  if($page<$maxpage){
    $str.='<a href="'.$actionurl.'&page='.($page+1).'">'.$l_dpcms_fore['next'].'</a>';
    $str.='<a href="'.$actionurl.'&page='.$maxpage.'">'.$l_dpcms_fore['last'].'</a>';
  }
  return $str;
}
Dec 16
IIS:

恢复到初始密码888888

1、找到软件安装目录下的awIB.ini文件
2、用文本编辑器打开,找到[common]下的checksum项和[user1]下的password项,将checksum项和[user1]下的password项删除(删除值或整行删除)
3、重启IIS(运行iisreset)

linux Apache:

恢复到初始密码888888

1、找到/usr/local/ibsys/awIB.ini文件
2、用文本编辑器打开,找到[common]下的checksum项,将其删除(删除值或整行删除)
3、重启apache

windows apache:

恢复到初始密码888888

1、找到软件安装目录下的awIB.ini文件
2、用文本编辑器打开,找到[common]下的checksum项,将其删除(删除值或整行删除)
3、重启apache
Dec 16

让Nginx下PHP 也能使用PATH_INFO 不指定

空城 , 2009/12/16 11:55 , 技术 » PHP , 评论(0) , 引用(0) , 阅读(277) , Via 本站原创
nginx.conf内

location \.php$    #去掉.php后边的$,$在正则里表示结束,这样就无法取得www.xxx.com/index.php/1.html中/1.html这段
{
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    ……
    fastcgi_param  PATH_INFO $fastcgi_script_name; #增加这句,将Nginx的系统变量$fastcgi_script_name赋给PATH_INFO
}
Dec 11

这个月折腾的够惨 不指定

空城 , 2009/12/11 00:58 , 心情随笔 , 评论(0) , 引用(0) , 阅读(226) , Via 本站原创
这个月只能用一个非常累来形容。
从最初被百度K掉www
之后刚刚恢复,网站服务器频繁被关闭。
后来刚把服务器搬到美国服务器上,出了网站访问慢外,服务器还承受不了网站访问压力。
再后被逼的转回国内,

今天转刚把数据转过来。还的考虑之后的网站程序要怎么开发,是用ajax还是保持现在的状态。ajax或许能解决一些非法关键字的过滤,但对SEO就差了,实在不行,只能牺牲服务器资源,做一下非法关键字替换,纠结啊。

累。。。。。。
Nov 10

允许MySql远程连接 不指定

空城 , 2009/11/10 16:15 , 技术 » mysql , 评论(0) , 引用(0) , 阅读(317) , Via 本站原创
从“命令提示符”进入mysql
如果MYSQL安装在E盘

那就输入

e:

cd mysql(mysql的安装目录)

cd bin

mysql -uroot -p88888


root是用户名 88888是你自己的密码

要先一步一步到 bin目录下再执行登录。

你的如果安装在C盘,那第一步可以输入 cd\ 就直接回到c:盘了



解决方法(转):---但执行第一种办法时出现错误,第二种办法成功

1。改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"
mysql -u root -pvmwaremysql>use mysql;mysql>update user set host = '%' where user = 'root';mysql>select host, user from user;
2. 授权法。例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
Tags:
分页: 2/52 第一页 上页 1 2 3 4 5 6 7 8 9 10 下页 最后页 [ 显示模式: 摘要 | 列表 ]