■スレッドリストへ戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 最新50
【スレッド】2ch型掲示板 14 【フロート型】
- 615 :nobodyさん :2006/09/28(木) 08:35:21 ID:???
- #!/usr/bin/perl -w
use strict;
use POSIX qw(strftime);
use File::stat;
use Time::Local qw(timegm);
if ($#ARGV != 1 || $ARGV[0] =~ /\W/ || $ARGV[1] =~ /\D/) {
print <<EOT;
Status: 400 Bad Request
Content-Type: text/plain
400 Bad Request
EOT
exit;
}
my $fname = "../$ARGV[0]/dat/$ARGV[1].dat";
my $st;
if (!($st = stat($fname))) {
print <<EOT;
Status: 404 Not Found
Content-Type: text/plain
404 Not Found
EOT
exit;
}
- 616 :nobodyさん :2006/09/28(木) 08:36:06 ID:???
- my $ims = !$ENV{HTTP_IF_MODIFIED_SINCE}
? 0
: $ENV{HTTP_IF_MODIFIED_SINCE} =~ /^\w{3,}, {1,2}(\d{1,2})[ -](Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[ -](\d{2,4}) {1,2}(\d{1,2}):(\d{2}):(\d{2}) GMT$/
? timegm($6, $5, $4, $1, index('JanFebMarAprMayJunJulAugSepOctNovDec', $2) / 3, $3)
: $ENV{HTTP_IF_MODIFIED_SINCE} =~ /^\w{3} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) {1,2}(\d{1,2}) {1,2}(\d{1,2}):(\d{2}):(\d{2}) (\d{4})$/
? timegm($5, $4, $3, $2, index('JanFebMarAprMayJunJulAugSepOctNovDec', $1) / 3, $6)
: 0;
if ($ims ge $st->mtime) {
print "Status: 304 Not Modified\n\n";
exit;
}
my $mtime = strftime('%a, %d %b %Y %T GMT', gmtime($st->mtime));
print <<EOT;
Content-Type: application/xml; charset=Shift_JIS
Last-Modified: $mtime
Cache-Control: max-age=5
<?xml version="1.0" encoding="Shift_JIS"?>
<text><![CDATA[
EOT
if (open(DAT, $fname)) {
while (<DAT>) {
print;
}
close(DAT);
}
print "]]></text>\n";
- 617 :nobodyさん :2006/09/28(木) 08:39:03 ID:???
- >>615-616 のように dat の内容を XML の CDATA セクションに入れて渡せばおk
- 618 :nobodyさん :2006/09/28(木) 09:35:48 ID:???
- >>616 ちとミス
-if ($ims ge $st->mtime) {
+if ($ims >= $st->mtime) {
で、使い方は、例えば /test/dat.cgi として置いた場合 /test/dat.cgi?php+1127896640 のように呼ぶ。
- 619 :608 :2006/09/28(木) 14:47:39 ID:???
- read.html
とりあえず、ログを2個作るバージョンをアップしておきます。
http://deai5656.s11.x-beat.com/cgi/test_bbs/
配布場所
http://1st.geocities.jp/deai5656/
普通にエラー、バグだらけなので誰か直してくだ(ry
>>615-618
POSIXがX-BEATだと使えないかもしれないけど試してみますー
- 620 :nobodyさん :2006/09/29(金) 04:09:00 ID:???
- 同じようなスレが運営にもあるな
それとは別でやってんの?
- 621 :nobodyさん :2006/09/29(金) 04:23:22 ID:???
- それのぱくりだろ
あっちはApacheで文字コード変換してるんだっけ?
CGIやPHPで代わりに変換したらPerlread.cgiとどっちが負荷でかいか・・・
- 622 :nobodyさん :2006/09/29(金) 04:37:40 ID:???
- 2ch 版のは文字コード変換は mod_charset_lite でやってる。
自宅鯖とかならそれ使えばいいけど、レン鯖でモジュール組み込みとかできなければ
代わりに >>615-618 のを使えばおk XML の CDATA セクションに入れる形なら、
文字コード変換せずに Shift JIS のままでいいからね。
226KB
新着レスの表示
スレッドリストへ戻る 全部 前100 次100 最新50
0ch BBS 2004-10-30