概要
PSOS(Perform Script On Server:サーバ上でスクリプトを実行する)では、通常はクライアント上で実行されるルーチンの一部が、FileMaker Server上で実行されます。PSOSを使うと、たとえばひとつひとつのレコードが大きく(フィールドがたくさんあるにしても、一部のフィールドに大量のデータが入っているにしても)、そのレコードがたくさんあるテーブルで検索をする場合などに、とても速く実行できることがあります。
そのような検索がサーバ上で完了すると、レコード「全体」をクライアントに送るのではなく、カレンダーの表示に必要なデータだけを送ります。
このような高速化の効果は、WANで使っている時、つまりクライアントとFileMaker Serverが異なる物理ネットワーク上にある時に、最も顕著に現れます。クライアントとFileMaker Serverが離れているほど、PSOSは効果的です。
PSOSについてさらに詳しく知るには、Beezwax社に掲載されている、以下の2本の優れた記事をお勧めします:
http://buzz.beezwax.net/2014/04/04/an-introduction-to-perform-script-on-server
http://buzz.beezwax.net/2014/04/21/100x-faster-flight-testing-filemaker-13-perform-script-on-server-part-ii
PSOSを使う(サーバ上でスクリプトを実行する)
DayBackでPSOSを使うには、FileMaker Serverが動作している必要があります。「Load Calendar Settings - On Startup --- Edit Configuration Here ---」スクリプトの編集ウインドウを開きます。このスクリプトの最初の方に「Would you like to use "PSOS" (Perform Script on Server) when possible?」(可能な場合には"PSOS"を使う?)というコメントがあります。現在は「Yes」に設定されています。PSOSを使わない場合は、このスイッチを「No」に変更します。
必要な設定はこれだけですが、このスイッチは実際には何をするのだろうと興味を持つ方もいるでしょう。これは、PSOSが利用できる状況なら利用するということを、DayBackに指示しています。同じスクリプト中にこの後、「If PSOS is on, make sure PSOS is available.」(PSOSをオンにする場合、PSOSを利用できることを確認する)というコメントがあります。
そのコメントの後で、PSOSが使えるかどうか、DayBackは実際にサーバのテストをします。簡単なスクリプトをサーバ上で実行することで、サーバがPSOSをサポートしているかどうか、PSOSの同時セッション数の上限を超えていないかどうかを確かめます。開発の作業中など、サーバを使わずに動作しているかどうかもチェックします。
PSOSでコールされるそれぞれのスクリプトも、PSOSの同時セッション数の上限を超えていないかどうかをテストし、超えていればローカルで実行されます。
このようにしてDayBackは、利用可能な時のみPSOSを使います。そのため、スイッチのオン/オフを常に気にする必要はありません。
なぜスイッチがあるのですか?そのようにして常に動かしておけばいいのではありませんか?
PSOSは高速化に役立つのでとても良いと考えられますが、使わない方がいいと思われる理由も3つあります。
• サーバの負荷。サーバが非力でユーザ数が多い場合、PSOSを使うとサーバがクラッシュしてしまうことがあります。このような状況が懸念される場合は、このスイッチのテストをしてください。外部の業者を使ってホスティングしている場合もクラッシュのおそれがあるので、PSOSに関して業者に相談してください。
• デバッグ。スクリプトデバッガを使ってスクリプトを試験的に動かしていて、かつFileMaker Serverでホスティングしていて、かつPSOSがオンになっていると、デバッグが少しだけ「ミステリアス」になることがあります。スクリプトがサーバで実行されるために消えて、完了した時だけデバッガに返ってくるからです。
• このような場合には「Toggle PSOS」スクリプトを実行するとPSOSのオン/オフを交互に切り換えられるので、デバッグをする際にオフにします。オフのままになっていても問題ありません。このスクリプトは、自分のセッションのPSOSを変更するだけだからです。ファイルを使う他の人には影響ありません。また、自分自身もファイルを再度開く時には影響を受けません。
• 速度。強力なサーバであっても、PSOSが常に最速の方法というわけではありません。PSOSを使って高速化の効果が最も劇的に現れるのは、FileMaker Serverから遠い時です。ただこれにはトレードオフがあります。PSOSで動作するスクリプトは、ローカルで実行されるスクリプトとは違って、結果をキャッシュしません。したがって、サーバが近い場合は、キャッシュの方が効果があるのでPSOSは使わない方がよいという判断になるかもしれません。
極端な例を以下に示します:
• PSOSを使わずに他の国からカレンダーを開くと、ある月から別の月へ移動するのに5分かかります。しかしいったん別の月へ移動してから元の月へ戻る時には、ほんの数秒です。
• PSOSがオンの場合、ある月から別の月へ移動するのはわずか5秒です。しかし常に5秒かかります。さっきまで見ていた月に戻るのも、別の月へ移動するのも、同じだけかかります。
•
このようなことを踏まえて、自分の状況ではどうしたら最も速いか、PSOSを実験してください。
原文:PerformScriptOnServer|https://www.seedcode.com/pmwiki/index.php?n=DayBackForFileMaker.PerformScriptOnServer
コメント
0件のコメント
サインインしてコメントを残してください。