簡言:
大多用戶的網頁主機都為虛擬伺服器,在調整時間方面往往需要要求網空公司,大多數的網空不會去調整正確時間,而主機亦沒有時間定時較正功能,而此想出直接使用論壇程序與時間伺服器修正時間。
概念代碼如下
#!/usr/bin/perl
print "Content-type: text/html\n\n";
use Socket;
socket (S, 2, 1, 0);
select (S);
$| = 1;
select (STDOUT);
connect (S, pack('S n C4 x8', 2, 37, unpack ('C4', ((gethostbyname ('stdtime.gov.hk'))Β])Ύ])));
$gmt = (hex (unpack ('H*', <S>)) - 2208988800);
$time = time;
close(S);
undef $|;
print $gmt - $time . $/; #相差時間
print $time . $/; #主機時間
print $gmt . $/; #國際時間
重點如下:
1:時間校正由管理員手動或設置定時執行。
2:所相差時間寫入 boardinfo.cgi,於bbs.lib.pl 寫一個通用的時間獲取涵數 並減去相差秒數 及傳回較正後的時間,且把論壇所有的時間涵數改為調用bbs.lib.pl的那個通用的時間獲取涵數。
作为后台插件可行:)
只是這功能是需要修改所有cgi檔案的時間部分...
不能作單一外掛...
如果写入 boardinfo.cgi,就可做外挂使用:)
当然主要程序可做小的休正。。
PS:我对use Socket; 头大ing。。巨耗费资源:)
Perl 的Socket 調用,可與 C 的一樣喔
IO::Socket 的指向更頭痛..
呵呵,我是看不懂拉,我记得Anthony说过使用和时间服务器校对来达到论坛时间的正确性,现在比较简单点的就是,将服务器时间与时间服务器定期或手动做校对后,记录相差的秒数,论坛调用时间时,减去相差时间,由于时间在短期内不会变动太大,一般一个星期或一个月校对一次就可以。
呵呵,和Anthony的想法一样。