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

ブラウザへ複数回に分けてデータを送りたいのですが?

発言者:IWGP-CHAMP
( Date Friday, September 06, 1996 16:13:56 )


このページを発見して3週間。
本も購入させていただきました。
Webも含め,とても助かってます。
今,AppleScriptでCGIを書いてますが,
知っている方教えて下さい。
(行き詰まってます)

例えば,データ検索後,20件のデータが該当しました。
ブラウザへは,1〜5件/20件中のデータの内容を表示し,
「もっと見たい」ボタンを表示します。
その後,「もっと見たい」ボタンを押されたら,
6〜10件/20件中のデータと
「もっと見たい」ボタンを表示する。

再帰法使うんでしょうか?指定は,〜.acgi@func()?
私には,これくらいしか発想できません

誰か教えて下さい。
kazu@mmam.com


田中求之 さんからのコメント
( Saturday, September 07, 1996 14:58:25 )

データの検索はどのようにやってますか? ファイルメーカーか何かを
使っているのでしょうか? それとも、スクリプトだけで検索を行って
いるのでしょうか?

それによって方法は分かれます。


非常に単純に考えるならば、その都度検索を行って、不要な部分を削った
ページをいちいち作っていくという方法がありますが、さすがにこれでは
遅いでしょう。

考えられる方法としては、ページの中に検索結果を HIDE で埋め込んでおく
とか、テンポラリファイルを作ってそこから必要な部分だけを表示する
などが考えられますね。

猫の手 さんからのコメント
( Tuesday, September 10, 1996 20:48:26 )

 ちょっと話は違うかも知れませんが、アップルスクリプトでcgiを作っている
として、長い処理をさせるのですが、結果を返す必要がないので、
作業を受け付けた旨returnしておいて、あとで、
残りの部分を処理してしまうと言うことは可能なんでしょうか。
returnを返したら、それ以降、止まってしまうように思うのですが。

田中求之 さんからのコメント
( Tuesday, September 10, 1996 22:21:46 )

>長い処理をさせるのですが、結果を返す必要がないので、
>作業を受け付けた旨returnしておいて、あとで、
>残りの部分を処理してしまうと言うことは可能なんでしょうか。

可能ですよ。

確かに、return してしまえば、CGI としての処理は終了します。したがって、
CGI とは別に処理用のアプレットを作っておいて、それに対して処理の指示
を出してから return する(igonoring application responses に
よって reply を待たずに指示を出す必要があります)というのが一つの方法
です。

もう一つは、プロパティかファイルに処理の登録をおこなって return し、
あとで idleハンドラー内で登録された処理を実際に行うというものです。

かつてホームページでチェックしたものを自動的にメールで配送するという
サービスの実験を行っていたことがあるのですが、そのときには、

1:CGI のハンドラー内では、宛先と送るファイルを予定表ファイルに書き込んだら
  そくざに return

2:1時間に1度実行されるようにした idle ハンドラーが予定表をチェックし、
  もし配送の指示が書き込まれていたら、配送処理を行う

というようにしてました(メールアドレスの記入ミスによる配送エラーが多いのに
うんざりして、このサービスは廃止しましたけどね)

猫の手 さんからのコメント
( Saturday, September 14, 1996 09:27:31 )

 コメントありがとうございます。
 
 スクリプトの途中で、他のスクリプトを起動して仕事を任せて、
httpにはreturnを返してしまう。私は、この途中で起動させた仕事が
終了するのを呼び出したスクリプトが待つのかと思っていました。
特に、returnを期待しない場合は、さっさと先に進めるんでしょうか。
 
 idleにまかせる方法は、急ぎでない場合には有効ですね。
私も、webからcgiを使って、メッセージを特定のフォルダに
書き出しておいて、あとで、常駐しているアプレットが
そのフォルダを覗いて、メッセージがあれば、ニフティーに
ポストするというサービスをやっています。
ポストは、comNifがやってくれますので、楽賃です。
 
 いろいろと試してみます。
 
 猫の手

IWGP-CHAMP さんからのコメント
( Wednesday, September 18, 1996 14:36:52 )

>データの検索はどのようにやってますか? ファイルメーカーか何かを
>使っているのでしょうか? それとも、スクリプトだけで検索を行って
>いるのでしょうか?
AppleScriptでテキストデータを読み込んで検索してます。


それによって方法は分かれます。


考えられる方法としては、ページの中に検索結果を HIDE で埋め込んでおく
とか、テンポラリファイルを作ってそこから必要な部分だけを表示する
などが考えられますね。
ありがとうございます。
ブラウザHTMLで
input type = "HIDDEN"
にて処理することで解決できました。

私の勉強不足でした。
ところで,処理を速くしたく,またUNIXベースでの展開を予定しているのですが
CGIをMacPerlにする事で,処理は速くなるのでしょか?

どなたか教えて下さい。



中山佳代 さんからのコメント
( Wednesday, November 20, 1996 15:45:41 )

田中さんのFMPサンプルを参考にして
データ検索をおこなうシステムを作成中です。

私もIWGP-CHAMPさんと同じように
ブラウザ側に複数回に分けてデータを送るようにしたいと思い
いろいろと試みているのですが、さっぱりうまく行きません。

テンポラリファイルを作ってそこから必要な部分だけを表示する方法について
詳しく教えていただけないでしょうか?

知識不足でこのような質問をお願いして申し訳ありませんが、
よろしくお願いします。

田中求之 さんからのコメント
( Wednesday, November 20, 1996 18:50:10 )

>テンポラリファイルを作ってそこから必要な部分だけを表示する方法について
>詳しく教えていただけないでしょうか?

もうすこし具体的に、どのように処理を行うつもりなのか教えてもらえますか?



中山佳代 さんからのコメント
( Thursday, November 21, 1996 12:23:55 )

説明不足で申し訳ありませんでした。

私が行いたいと思っている処理は
登録しているデータのタイトル一覧を表示する際や
検索後、該当するデータのタイトル一覧を表示する際に
5つずつタイトルを表示して、NextPageボタンを押すことで
また次の5つのタイトルが見れる。という処理です。

今のところ、田中さんのFMPサンプルでいうListToPageサブルーチン
(該当するデータのタイトルをリストにする処理)
のところで、タイトルを5つずつにわけて、表示させようとしています。

本当に知識不足で申し訳ありませんが、
よろしくお願いします。

田中求之 さんからのコメント
( Friday, November 22, 1996 18:41:19 )

>5つずつタイトルを表示して、NextPageボタンを押すことで
>また次の5つのタイトルが見れる。という処理です。

この場合は、手順としては、まず最初に検索やリストアップを一気に行っておき、
該当するレコードの ID のリストを得て、それをテンポラリファイルに書き込ん
でおく。そして、それをもとに、指定された部分を表示していくというのが一つ
の方法です。

もう一つは、表示の度に検索し直すというものです。つまり検索を毎回行うが、
表示は指定された範囲(たとえば10個目から15個目)のみ行うという方法
です。この場合は、検索の分だけ時間はかかりますが、テンポラリファイル等の
管理(検索結果の管理)が不要ですので、スクリプトとしてはシンプルになります。

ページ分け処理のサンプルでしたら、過去に書いたスクリプトがありますので、
それをお見せしましょうか? ただし、ファイルメーカーのものではありません。
フォルダー内のファイル一覧を、5個ずつ区切って見せるものです。

中山佳代 さんからのコメント
( Monday, November 25, 1996 11:20:32 )

コメントありがとうございます。

試行錯誤してみたのですが、
やはりうまくいきません。

よろしければ、ページ分け処理のサンプルを見せていただけないでしょうか?

よろしくお願いします。

田中求之 さんからのコメント
( Monday, November 25, 1996 16:15:06 )

では、仕事を片づけてからチェックを行って、公開することにしましょう。

田中求之 さんからのコメント
( Monday, November 25, 1996 18:40:20 )

以下に、検索結果をページ分割して見せるサンプルを登録しておきました。

CGI Kit の File_db2 を改良したもので、Files フォルダーの中の
ファイルの検索を行って、キーワードを含むファイル名の一覧を表示
するものです。

1ページにつき5つずつ表示していくようになっています。


もともと自分の実験用に作ったものですので、スクリプトが整理されて
いませんので、簡単に仕組みを説明しておくと、ようするに最初に
検索を行って、その結果、該当するものが6以上あったときには、
検索結果のリストをテンポラリファイルに記録します。また、検索語句を
TEXT リソースにおさめておきます。

そして、2ページ目以降の表示の際には、テンポラリファイルを読み込んで
必要な部分の処理を行って表示するようになっています。

テンポラリファイルの消去などは行っていませんので、自分で削除する
必要があります。


なお、このサンプルを試すには、 Tanaka's osax 1.0 と StrRes osax が
必要ですので注意してください。

→  filedb_paged.hqx