このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

guestMsgまたはguestMsg2

発言者:岡崎
( Date Wednesday, April 01, 1998 17:52:48 )


guestMsgまたはguestMsg2で書き込みがいっぱいになると次のファイルを自動的に作らせたいのですが、
Tanaka's osax の getFileDataSizeを使うのはわかったのですが、スクリプトのどの部分にどんなコマンドを
入れればいいのでしょうか?
初心者なのですいません

田中求之 さんからのコメント
( Wednesday, April 01, 1998 18:49:09 )

CGI Kit はあくまでも自作のためのサンプルです。くどいようですが、この点を
もういちどいっておきます。

色々と方法はありますが、ここでは guestMsg2 (メッセージが一つのファイルに追記
されていくものです)で、メッセージの容量が 20K を越えたら、古いものはファイル
名を変更し、新しいページを作り直すという例を示します(古いページへのリンクなどは
自分で手動で行ってください)。

    set myFm to alias (thisFldr & "msg_base")
    set myFh to alias (thisFldr & "msg_header")
    set myFx to alias (thisFldr & "msg.html")
    
    set oldData to readFromFile myFm
    set myData to myData & oldData
    writeToFile myData to myFm
    
    set myHeader to readFromFile myFh
    
    writeToFile (myHeader & myData) to myFx

の部分を以下のように書き換えます。

    set myFm to thisFldr & "msg_base"
    set myFh to thisFldr & "msg_header"
    set myFx to thisFldr & "msg.html"
    
    set oldData to readFromFile file myFm
    
    if (byteLength of oldData) > 20480 then
      set myNewName to (TimeStamp) & "_msg.html"
      tell application "Finder"
        set name of file myFx to myNewName
      end tell
    else
      set myData to myData & oldData
    end if
    
    writeToFile myData to file myFm
    
    set myHeader to readFromFile file myFh
    
    writeToFile (myHeader & myData) to file myFx


古いページは msg.html と同じフォルダーの中に 980401184703_msg.html
というような、タイムスタンプ+ _msg.html という名前のファイルになって
保存されるはずです。

なお、このスクリプトは実際の動作は試していませんのであしからず。