-专注于互联网、网络技术、网络工程、网络营销SEO、搜索引擎、社会化网络、IT技术、网络编程、网络安全、服务器管理、网站开发、移动互联网软件应用等领域的原创IT科技博客,欢迎喜欢互联网的朋友一起交流!

24时区,GMT,UTC,DST,CST时间详解

全球24个时区的划分
      相较于两地时间表,可以显示世界各时区时间和地名的世界时区表(World Time),就显得精密与复杂多了,通常世界时区表的表盘上会标示着全球24个时区的城市名称,但究竟这24个时区是如何产生的?过去世界各地原本各自订定当地时间,但随着交通和电讯的发达,各地交流日益频繁,不同的地方时间,造成许多困扰,于是在西元1884年的国际会议上制定了全球性的标准时,明定以英国伦敦格林威治这个地方为零度经线的起点(亦称为本初子午线),并以地球由西向东每24小时自转一周360°,订定每隔经度15°,时差1小时。而每15°的经线则称为该时区的中央经线,将全球划分为24个时区,其中包含23个整时区及180°经线左右两侧的2个半时区。就全球的时间来看,东经的时间比西经要早,也就是如果格林威治时间是中午12时,则中央经线15°E的时区为下午1时,中央经线30°E时区的时间为下午2时;反之,中央经线15°W的时区时间为上午11时,中央经线30°W时区的时间为上午10时。以台湾为例,台湾位于东经121°,换算后与格林威治就有8小时的时差。如果两人同时从格林威治的0°各往东、西方前进,当他们在经线180°时,就会相差24小时,所以经线180°被定为国际换日线,由西向东通过此线时日期要减去一日,反之,若由东向西则要增加一日。
格林威治标准时间GMT
      十七世纪,格林威治皇家天文台为了海上霸权的扩张计画而进行天体观测。1675年旧皇家观测所(Old Royal Observatory) 正式成立,到了1884年决定以通过格林威治的子午线作为划分地球东西两半球的经度零度。观测所门口墙上有一个标志24小时的时钟,显示当下的时间,对全球而言,这里所设定的时间是世界时间参考点,全球都以格林威治的时间作为标准来设定时间,这就是我们耳熟能详的「格林威治标准时间」(Greenwich Mean Time,简称G.M.T.)的由来,标示在手表上,则代表此表具有两地时间功能,也就是同时可以显示原居地和另一个国度的时间。
世界协调时间UTC
      多数的两地时间表都以GMT来表示,但也有些两地时间表上看不到GMT字样,出现的反而是UTC这3个英文字母,究竟何谓UTC?事实上,UTC指的是Coordinated Universal Time- 世界协调时间(又称世界标准时间、世界统一时间),是经过平均太阳时(以格林威治时间GMT为准)、地轴运动修正后的新时标以及以「秒」为单位的国际原子时所综合精算而成的时间,计算过程相当严谨精密,因此若以「世界标准时间」的角度来说,UTC比GMT来得更加精准。其误差值必须保持在0.9秒以内,若大于0.9秒则由位于巴黎的国际地球自转事务中央局发布闰秒,使UTC与地球自转周期一致。所以基本上UTC的本质强调的是比GMT更为精确的世界时间标准,不过对于现行表款来说,GMT与UTC的功能与精确度是没有差别的。
夏日节约时间DST
      所谓「夏日节约时间」Daylight Saving Time(简称D.S.T.),是指在夏天太阳升起的比较早时,将时钟拨快一小时,以提早日光的使用,在英国则称为夏令时间(Summer Time)。这个构想于1784年由美国班杰明·富兰克林提出来,1915年德国成为第一个正式实施夏令日光节约时间的国家,以削减灯光照明和耗电开支。自此以后,全球以欧洲和北美为主的约70个国家都引用这个做法。目前被划分成两个时区的印度也正在商讨是否全国该统一实行夏令日光节约时间。欧洲手机上也有很多GSM系统的基地台,除了会传送当地时间外也包括夏令日光节约时间,做为手机的时间标准,使用者可以自行决定要开启或关闭。值得注意的是,某些国家有实施「夏日节约时间」的制度,出国时别忘了跟随当地习惯在表上调整一下,这可是机械表没有的功能设计哦!
CST时间
CST却同时可以代表如下 4 个不同的时区:
Central Standard Time (USA) UT-6:00
Central Standard Time (Australia) UT+9:30
China Standard Time UT+8:00
Cuba Standard Time UT-4:00
可见,CST可以同时表示美国,澳大利亚,中国,古巴四个国家的标准时间。

IE下验证码一直错误,火狐正确(IE和Firefox下的Cookie兼容问题)

网站在别人服务器登陆正常,迁移到自己的测试服务器后,IE,360等基于ie内核的浏览器无法登陆(一直提示验证码输入错误,实际输入时正确的),火狐可以正常登陆。
突然出现这种奇怪的问题,很是纠结。通过查看代码,逻辑很清晰,代码不应该有问题。
跟踪浏览器信息,发现登陆逻辑正常执行,最后进行了页面跳转,之后又跳转回来(即又刷新了一次,又回到登陆页面),那么应该是权限验证失败。没有抛出无权限提示,那么只能是读取Cookie失败。检查IE的Cookie记录,发现登陆页面没有完成Cookie写入,这种简单的Cookie操作,不应该会有问题的。
开始百度,没找到想要的,大部分都是说浏览器设置方面的,但是可以确定肯定不是浏览器设置的问题,因为其他网站也可以正常登陆。

IE和Firefox下的Cookie兼容问题:

用Firefox可以登录,使用IE后,不可以登录,最初是怀疑IE的Cookie功能没有打开引起的,测试到最后这个原因也排除了。

 既然是通过Cookie实现SSO,那认证必然是保存在Cookie中,Cookie文件就是保存在本地的缓存目录下(firefox下的Cookie是加密的,查不到Cookie文件),但是奇怪的是IE登录后,缓存目录下根本没有发现生成的Cookie文件,这就是不能登录的根本原因。

 为什么没有生成Cookie文件呢,要不没有生成,要不生成了又被IE销毁了。前者不可能发生,如果不生成 Cookie,那为什么有些浏览器行,firefox更是全部可以,只能怀疑第二个原因,Cookie是被IE自动销毁了,IE销毁Cookie是根据 Cookie的生命期,例如,Cookie是2009-01-01 01:00:01生成的,有效时间是5个小时,那到了2009-01-01 06:00:01后,IE就会销毁此Cookie文件。对于IE而言,Cookie的有效时间段是理解为客户端的时间与服务器端时间的间隔,而对于 FireFox而言,Cookie的有效时间完全由服务器端的时间决定,Firefox的cookie不依赖于服务器的时间,可见,FireFox是充分考虑到了服务器端与客户端的时差问题。

 立即检查系统的时间,发现系统时间和服务器没有差别,有一点纳闷,影响时间的还有一个时区(timezone),果然原因找到,时区设定错误。时区设定不正确也会影响IE对Cookie生命期的计算,因为Cookie的生命期是基于GMT计算的。

 原因总结:没有登录成功的IE,是因为没有设定正确的时区和时间,导致IE错误将保存认证信息的Cookie文件自动销毁了,所以无法登录。

sql批量替换字段里指定的字符串语法

语法:update 表名 set 字段名=replace(字段名,'要替换的字符串','要替换成的字符串');
例如:把字段里的aaaaxxxbbb  变成 ccccxxxbbb

update 表名 set 字段名=replace(字段名,'aaaa','cccc');

linux下phpMyAdmin错误:Wrong permissions on configuration file, should not be world writable!

Linux下phpMyAdmin出现Wrong permissions on configuration file, should not be world writable!错误解决办法:

phpMyAdmin自身设置777权限不行,为了安全phpmyadmin在linux下只能以755的权限才能正确运行,要把所有文件的组和其他用户的写权限全部去掉才行,将权限改为755

cd到phpMyAdmin目录,设置文件夹权限为755

命令为:chmod -R 755 phpMyAdmin

linux下安装和使用花生壳

以redhat系列为例:

一、安装说明(以CentOS 5为例)
 1、安装必要的开发包
 [root@localhost ~]# yum install gcc gcc-c++ autoconf automake
 2、下载phddns-2.0.2.16556.tar.gz到某一个目录
 [root@localhost ~]# wget http://download.oray.com/peanuthull/phddns-2.0.2.16556.tar.gz
  www.xxx.com 
3、解压所有文件
 [root@localhost ~]# tar zxvf phddns-2.0.2.16556.tar.gz
 4、进入目录并编译
 [root@localhost ~]# cd phddns-2.0.2.16556
 [root@localhost phddns-2.0.2.16556]# aclocal
 [root@localhost phddns-2.0.2.16556]# autoconf
 [root@localhost phddns-2.0.2.16556]# automake
 [root@localhost phddns-2.0.2.16556]# ./configure
 [root@localhost phddns-2.0.2.16556]# make
 [root@localhost phddns-2.0.2.16556]# cd src
 [root@localhost src]# ls -l phddns
 -rwxr-xr-x 1 root root 80968 Aug 2 11:18 phddns
 5、执行编译好的程序并配置(默认使用/etc/phlinux.conf,如果不存在这个文件则自动进入交互配置)
 [root@localhost src]# ./phddns
 输入服务器地址,如无特殊情况可使用默认值
 Enter server address(press ENTER use phlinux3.oray.net):
  www.xxx.com 
输入您的Oray帐号名称
 Enter your Oray account:
 对应的Oray帐号密码
 Password:
 选择帮定的网卡,如无特殊,默认即可
 Network interface(s):
 eth0:192.168.141.18
 lo:127.0.0.1
 Choose one(default eth0):
 选择日志保存到哪个文件
 Log to use(default /var/log/phddns.log):
 保存配置文件,选择yes则直接保存到/etc/phlinux.conf,输入other可以指定文件
 Save to configuration file (/etc/phlinux.conf)?(yes/no/other):
 接下来程序将已交互模式开始运行
 192.168.141.18
 NIC bind success
 OnStatusChanged okConnecting
 OnStatusChanged okDomainListed
 OnDomainRegistered skyvense22.gicp.net
 OnStatusChanged okDomainsRegistered
 UserType: 0
 看到上面这些就表示登录成功,这个时候可以按ctrl+c先退出程序
 6、将phddns拷贝到你希望的位置
 [root@localhost src]# cp phddns /usr/bin/
 7、以后台模式启动花生壳并检查运行情况
 [root@localhost ~]# /usr/bin/phddns -c /etc/phlinux.conf -d
 phlinux started as daemon!
 [root@localhost ~]# tail /var/log/phddns.log
 2011/08/02 11:28:58.256| ExecuteUpdate OK, BeginKeepAlive!
 2011/08/02 11:29:59.354| SendKeepAlive() 8208
 2011/08/02 11:30:00.355| RecvKeepaliveResponse() Data comes, OPCODE:8272
 2011/08/02 11:30:00.356| Keepalive response received, client ip: 116.231.123.96
 2011/08/02 11:31:00.447| SendKeepAlive() 8208
 2011/08/02 11:31:01.450| RecvKeepaliveResponse() Data comes, OPCODE:8272
 2011/08/02 11:31:01.450| Keepalive response received, client ip: 116.231.123.96
  www.xxx.com 
8、退出花生壳
 查看进程ID
 [root@localhost ~]# ps -A | grep phddns
 13731 ? 00:00:00 phlinux
 让后台进程退出
 [root@localhost ~]# kill -9 13731
 9、将花生壳加到系统启动时运行
 [root@localhost ~]# vi /etc/rc.local
 在文件的末尾加上一行:/usr/bin/phddns -c /etc/phlinux.conf -d
 二、花生壳Linux版本命令行参数说明
 [root@localhost ~]# /usr/bin/phlinux -h
 Peanuthull Linux-core 2.0 by oray.com, copyright 2011
 Peanuthull Linux-core Help
 --first-run
 -f, run for the first time
 用于首次启动时配置参数
 --interact
 -i, run as interactive mode
 program will request for necessary parameters.
 this mode will automatically enabled at first running,
 or your configuration file has been lost.
 启动交互模式
  www.xxx.com 
--daemon
 -d, run as a daemon
 program will quit after put itself to background,
 and continue running even you logout,
 you can use kill -9 <PID> to terminate.
 后台模式
 --config
 -c, run with configuration file
 program will run with the file
 指定使用哪一个配置文件
 --user
 -u, run as the user
 program will run as the user
 以指定用户启动后台进程
 --help
 -h, print this screen.
 Please visit http://www.oray.com for detail.
  www.xxx.com 
三、常见问题
 如何手动修改登陆的用户名及密码?
 您可以直接编辑/etc/phlinux.conf文件,对登陆用户名及密码进行修改。
 花生壳日志保存路径
 /var/log/phddns.log
 为什么花生壳无法登陆?
 花生壳使用的通信端口是TCP:6060和UDP:6060(方向:OUT),请确认防火墙没有把这几个通信端口封掉。
 如何查看花生壳当前运行状态?
 查看日志:
 [root@localhost ~]# tail /var/log/phddns.log
 2011/08/02 11:28:58.256| ExecuteUpdate OK, BeginKeepAlive!
 2011/08/02 11:29:59.354| SendKeepAlive() 8208
 2011/08/02 11:30:00.355| RecvKeepaliveResponse() Data comes, OPCODE:8272
 2011/08/02 11:30:00.356| Keepalive response received, client ip: 116.231.123.96
 2011/08/02 11:31:00.447| SendKeepAlive() 8208
 2011/08/02 11:31:01.450| RecvKeepaliveResponse() Data comes, OPCODE:8272
 2011/08/02 11:31:01.450| Keepalive response received, client ip: 116.231.123.96
  www.xxx.com 
如何在其他平台(非X86)编译运行?
 交叉编译mips cpu版本方法:
 1、安装交叉工具并配置环境
 2、配置参数
 ./configure --host=i386-linux --target=mipsel-linux --build=mipsel-linux CXX=mipsel-linux-gcc CC=mipsel-linux-gcc LD=mipsel-linux-ld
 3、make
  www.xxx.com 
4、最后静态链接下
 mipsel-linux-gcc -g -O2 -o phlinux -s main.o phupdate.o PHGlobal.o PHSocket.o md5.o log.o generate.o coder.o blowfish.o bitstream.o base64.o ConvertUTF.o CCmdParser.o PhClient.o PhUpdater.o /opt/openwrt/mipsel-linux/lib/librt.a /opt/openwrt/mipsel-linux/lib/libstdc++.a //opt/openwrt/mipsel-linux/lib/libc.a
 5、压缩下(好放到路由器的小空间)
 upx -o phlinux2 phlinux

错误信息:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

linux下mysql服务错误
错误信息:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
错误原因:由于mysql 默认的mysql.sock 是在/var/lib/mysql/mysql.sock,但linux系统总是去/tmp/mysql.sock查找,所以会报错
解决办法:
1.直接指定mysql通道:
[root@localhost ~]# mysql --socket=/var/lib/mysql/mysql.sock
mysql>
2.创建快捷方式(软连接)
为mysql.sock增加软连接(相当于windows中的快捷方式)。
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
3.以上方法如何肯定解决这个问题,让mysql在命令行下完美工作,但是可能phpmyadmin图形界面操作还会有这个错误信息,这时候需要我们更改mysql配置文件:
cp support-files/my-medium.cnf /etc/my.cnf 把mysql配置文件复制到/etc/my.cnf并重命名
打开my.cnf:
datadir=/var/lib/mysql
#socket=/var/lib/mysql/mysql.sock
socket=/tmp/mysql.sock
将原来的socket路径注释掉,换成socket=/tmp/mysql.sock即可,这样系统就可以正常找到mysql.sock文件了

Linux下apache和MySQL的启动与停止

Linux下apache和MySQL的启动与停止
一、启动方式
(1)apache
假如安装目录为:/usr/local/apache2
脚本启动 /usr/local/apache2/bin/apachectl start
(2)mysql
先查看状态:# /etc/rc.d/init.d/mysql status如果显示[FAILED]说明是停止的
1、使用 service 启动:service mysqld start
2、使用 mysqld 脚本启动:/etc/rc.d/inint.d/mysqld start(cp mysql-5.0.41/support-

files/mysql.server /etc/rc.d/init.d/mysqld)实际是将mysql.server的脚本复制重命名为mysqld
3、使用 safe_mysqld 启动:safe_mysqld&
二、停止
(1)apache
假如安装目录为:/usr/local/apache2
1.脚本停止 /usr/local/apache2/bin/apachectl stop
2.使用 service:service httpd stop
(2)mysql
1、使用 service:service mysqld stop
2、使用 mysqld 脚本:/etc/inint.d/mysqld stop
3、 mysqladmin shutdown
# mysqladmin -r root -p123456 shutdown
其中用户是root,密码是123456
三、自动启动和重启
(1)自动启动
①apache自启动:
将apache开始脚本写到系统启动里:echo "/usr/local/apache2/bin/apachectl start" >>

/etc/rc.d/rc.sysinit
②mysql自启动
1)察看mysql是否在自动启动列表中
# /sbin/chkconfig –list
2)把MySQL添加到你系统的启动服务组里面去
# /sbin/chkconfig – add mysql
3)把MySQL从启动服务组里面删除。
# /sbin/chkconfig – del mysql
(2)重启
①apache重启:
使用 service 启动:service httpd restart
使用脚本启动:/usr/local/apache2/bin/apachectl restart
②mysql重启:
使用 service 启动:service mysqld restart
使用脚本启动:/etc/inint.d/mysqld restart

centos下 Apache、php、mysql默认安装路径

apache:
如果采用RPM包安装,安装路径应在 /etc/httpd目录下
apache配置文件:/etc/httpd/conf/httpd.conf
Apache模块路径:/usr/sbin/apachectl
web目录:/var/www/html
如果采用源代码安装,一般默认安装在/usr/local/apache2目录下
php:
如果采用RPM包安装,安装路径应在 /etc/目录下
php的配置文件:/etc/php.ini
如果采用源代码安装,一般默认安装在/usr/local/lib目录下
php配置文件: /usr/local/lib/php.ini
或/usr/local/php/etc/php.ini
mysql:
如果采用RPM包安装,安装路径应在/usr/share/mysql目录下
mysqldump文件位置:/usr/bin/mysqldump
mysqli配置文件:
/etc/my.cnf或/usr/share/mysql/my.cnf
mysql数据目录在/var/lib/mysql目录下
如果采用源代码安装,一般默认安装在/usr/local/mysql目录下

PHP定时执行代码









<?php

ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.

set_time_limit(3000);// 通过set_time_limit(0)可以让程序无限制的执行下去

$interval=5;// 每隔5s运行

  

//方法1--死循环

do{

    echo '测试'.time().'<br/>'

    sleep($interval);// 等待5s    

}while(true);

  

//方法2---sleep 定时执行

    require_once './curlClass.php';//引入文件

      

    $curl = new httpCurl();//实例化

    $stime = $curl->getmicrotime();

    for($i=0;$i<=10;$i++){

          

        echo '测试'.time().'<br/>'

        sleep($interval);// 等待5s

          

    }

    ob_flush();

    flush();

    $etime = $curl->getmicrotime();

    echo '<hr>';

    echo round(($etime-stime),4);//程序执行时间


windows计划任务
PHP很少在win服务器上跑,具体实现也不再深究,看网上实现的原理大概是写bat脚本,然后让window任务添加执行这个bat脚本,具体可以参考:http://www.cnblogs.com/whoknows/articles/2228577.html
linux 的脚本实现
这里主要使用到crontab这个命令,
使用方式 :
crontab   filecrontab [ -u user ] [ -u user ] { -l | -r | -e }
说明 :
crontab 是用来让使用者在固定时间或固定间隔执行程式之用
使用crontab写shell脚本,然后让PHP调用shell,这个是利用linux的特性,应该还不算PHP自身语言的特性
可以参看:http://www.centos.bz/2011/07/php-cron-job-linux-crontab/

SSH Secure Shell Client中文乱码的解决方法

这是SSH Secure Shell Client多年未解决的短板,要求客户端和服务器端都要‘UTF-8’编码,Windows中文版的编码是非UTF-8。zh_CN.UTF-8是UTF编码的中文语言环境。
Windows使用的是GB2312编码,大多数linux系统支持的是UTF-8编码,而远程登陆时使用的是本地编码,所以会出现乱码的问题;现有几种解决方案:

方案一:修改linux服务器的环境变量
使用linux,在用户根目录下有一个.bash_profile配置文件,该配置只对当前用户有效.若对所有的用户有效,修改/etc/profile文件

使用ls -a命令可以查看到该文件.使用vi编辑器打开该文件后,在其中加入

LANG=zh_CN.GB2312
export LANG

即可正常显示中文.更改.bash_profile配置文件后,该文件内容如下:
方案二:或使用其他远程登陆软件,并修改配置,将字符编码设置为UTF-8。PS:远程登陆软件 命令行界面putty,Cterm,SecureCRT,含FTP功能的有Filezilla,Secure Shell Client,图形界面的有Xming,XShell,Xmanager等

下面以Putty和SecureCRT为例。

修改SecureCRT设置:选项(Options)->会话选项(Session Options)->外观(Appearance)->字符(Character),选择UTF-8。

putty选择配置窗口左边的Windows—— Translation,在右边的 Received data assumed to be in which character set 下拉列表中选择“UTF-8”
«12»
搜索
网站分类
最近发表
文章归档

技术支持TTF的家园

Copyright www.ttfde.org. All Rights Reserved.站点统计 Design by TTF的家园