比较直接的解决方案是在 PHP 和 MySQL 中遵循同一时区约定
PHP 在50 之后应该可以直接在代码中设定时区
date_default_timezone_set('PRC');
MySQL 也可以通过修改配置文件 myini 或者 mycnf 确保时区正确
default-time-zone=timezone
问题是你的MySQL服务器可能是在某台美国服务器上租借的,没法修改
所以解决的方法只能是:
修改插件源代码,将 SQL 语句改为
select forum_id, count(post_id) todayposts
from ' POSTS_TABLE '
where date(from_unixtime(post_time)) = date(DATE_ADD(now(), INTERVAL 14 HOUR))
group by forum_id
其中的 DATE_ADD(now(), INTERVAL 14 HOUR) 是-14 还是 14,这需要你仔细考虑下ping就是对一个网址发送测试数据包,看对方网址是否有响应并统计响应时间,以此测试网络。
具体方式是,开始--运行--cmd,在调出的dos窗口下输入 ping 空格 + 你要ping的网址,回车。
比如 “ pingXXX网址” 之后屏幕会显示类似信息
Ping XXX 网址[61135169105] with 32 bytes of data:
Reply from 61135169105: bytes=32 time=1244ms TTL=46
Reply from 61135169105: bytes=32 time=1150ms TTL=46
Reply from 61135169105: bytes=32 time=960ms TTL=46
Reply from 61135169105: bytes=32 time=1091ms TTL=46
后面的time=1244ms 是响应时间,这个时间越小,说明你连接这个地址速度越快。
如果是ping网关,一般输入ping 19216811,看返回的time一般小于2ms,就算是正常了。Ubuntu和Windows默认的时间管理方式不同,所以双系统发生时间错乱是正常的。Ubuntu默认时间是把BIOS时间当成GMT+0时间,也就是世界标准时,而我国在东八区(GMT+8),所以如果你的Ubuntu位置是中国的话你系统显示的时间就是BIOS时间+8小时。假如现在是早上8点,那么你Ubuntu会显示8点,这时BIOS中的时间是0点。 而当你切换到Windows系统时就会发生时间错乱,因为Windows会认为BIOS时间就是你的本地时间,结果就是Windows显示时间为0点……而假如你在Windows下同步时间,恢复显示为8点,这时BIOS时间也会被Windows改写成8点,再次进入Ubuntu时显示时间又变成了8+8=16点…… 解决的办法有两个,一个是让Windows使用Ubuntu的时间管理方式,就是启用UTC(世界协调时)另一个就是让Ubuntu按照Windows的方式管理时间,就是让Ubuntu禁用(世界协调时)。个人建议第二种,因为通常Windows是主系统,不推荐对Windows进行这种修改,不过我还是都介绍一下: 在Windows下启用UTC 打开运行窗口(快捷键Win+R),然后输入regedit启动注册表编辑器,并找到一下目录位置: HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/TimeZoneInformation/ 添加一项类型为REG_DWORD的键值,命名为RealTimeIsUniversal,值为1然后重启后时间即回复正常。 在Ubuntu下关闭UTC 这个用这个方法是我比较推荐的:按Ctrl+Alt+T调出终端,输入: sudo gedit /etc/default/rcS 按Ctrl+F调出查找,找到UTC=yes这一行,改成UTC=no,保存即可,时间修改立即生效。这样就可以解决Windows与Ubuntu双系统时间同步问题了。
校准iPad系统时间的 *** 作为:
第一步:点击桌面“设置”图标。
第二步:打开“通用”,选择“日期与时间”。
第三步:选择系统日期,设置当前北京时间即可完成更改设置。
1 crond服务未启动crontab不是Linux内核的功能,而是依赖一个crond服务,这个服务可以启动当然也可以停止。如果停止了就无法执行任何定时任务了,解决的方法是打开它: /sbin
service crond start
2 权限问题
比如:脚本没有x执行权限,解决方法:
增加执行权限,或者用bash abcsh的方法执行
也有可能crontab任务所属的用户对某个目录没有写权限,也会失败
3 时差问题
因为服务器与客户端时差问题,所以crontab的时间以服务器时间为准。
时差这个问题还真是搞人,这个我亲身体验了,现象如下:
(1) 我设置了一个定时脚本,用date命令观察服务器的时间到了脚本执行的时间点,发现没有执行
(2) 但是我把脚本设置成每分钟执行一次,就是OK的
见鬼了,服务器时间是对的啊?莫非是要加个什么时区?于是把脚本的时间减10或者12或者8个小时都尝试了下,发现都不行。
但是很明显是时间不一致导致的不执行。
最后用如下两行解决了问题:
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
service crond restart
参考这篇文章: >
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)