C言語のCGIを語りつつ普及するスレat PHP
C言語のCGIを語りつつ普及するスレ - 暇つぶし2ch500:nobodyさん
09/03/27 13:34:24
>>497-499
ありがとうございます。おかげでFastCGIを使ったときのイメージが理解できました。
FastCGIは興味があったけど、試してみるのが面倒というよりは、試してみるとのめり込んでしまいそうで
目の前にあるやらないといけないことをおろそかにできない状況だったので試せなかったのです。
元々はアセンブラでプログラムを組むのが趣味だったような人間ですので、手間よりも高速化が好きですから
今後は少しずつFastCGIも利用していきたいと思います。

501:nobodyさん
09/03/31 09:58:41
>>500
高速化にこだわるなら、自分でアプリケーションサーバ書くのがいいのでは
Apache臭はするけど、libaprなんかを使えばOSポータブルなdl()とかスレッドとか
メモリプールとか基本データ構造とか入っててお得ですよ。
ま、それなりにデカいけどね。


502:普及された人
09/03/31 22:35:52 Tx3EmaFc
この掲示板に出現する人は「C言語でCGI」をいかに、、、というのが目的ですし、
CGI部分を作るだけでも創造を絶する時間がかかりますので、アプリケーションサーバから作り始めるのは大変です。
今は情報が出回っていますので、作るに無理なことはないとは思いますが、一人で仕事外の時間利用だけで考えると、私ですと5年以上はかかりそうです。
Webアプリ一つ作るのにそれは効率的ではありません。
それにlibaprは、別にWebアプリケーションが高速になるものでもありません。
遅くなる可能性はあるけれど、作るときに便利で楽になるAPIだと思います。
C++技術者でない純粋なC言語技術者は、あまり使わないAPIだと思います。
使わざるを得ないAPI以外は、基本的に存在を知らなければすぐに自作してしまいますので。
「C言語が使える」ということは、別段便利なAPIを使う必要がないということでもあります。
libaprでメモリプールしなくとも、必要な分だけスレッドを立てて、mallocやcallocだけでしっかりメモリ管理できるということでもあります。(時に失敗しますが)
おまけにlibaprのメモリプールは確保した領域をシステムに対して返却しないと記載されていましたので、逆にかなりコントロールしにくいAPIな気もします。
それだけの手間(時間)をかけ、なおかつメモリ周りも適当な設計で良いのなら、普通にC言語でApache module型Webアプリケーションでも組んだ方が楽で高速で良いのではないでしょうか?

503:nobodyさん
09/04/01 11:08:56
作る際の効率が問題なら、そもそもwebアプリでCは選択しちゃダメ。
5年って、アナタたぶん作ったことないから死ぬほど安全に見積もってるよね?
アプリケーションサーバって、そこまで作るの大変じゃないよ。やることは基本的に待つだけだし。
実際は余暇を二週間位でも最初のプロトタイプ位はできるんじゃ...
まぁ、既存の適当にかかれたCGIをスレッド対応にするのは骨がおれると思うけど。

libaprのメモリプールの返却云々については、apr_pool_create の第二引数参照。
作業とか、ループとかにサブプールを作って、必要なメモリはそこから確保して、
終わったらサブプールだけ開放するって感じで。

でも、確かにCGIじゃないのでもうやめます。
fastcgiもCGIじゃないのではって気するけど...


504:nobodyさん
09/04/02 22:00:32
C言語が向いてるのは、開発費が多少増えたとしても、
サーバ台数が抑えられるから、トータルコストが安くて済むような案件だね。
検索サーバとか、2chとか、アクセス数が多いサイトとかね。

505:普及された人
09/04/04 11:18:37 JlRZ3FIj
>>503
はい、もちろん作ったことはありません。
それに、今までのところでは作る必要性も感じたことはありません。
私がC言語で既存のAPIを利用せずにアプリケーションサーバを作ることを考えると、、、
FastCGIのようにアプリケーションサーバ(これはハードのことです)側にある複数のTCPクライアントCGIと通信をこなしながら処理を進めることや、
アプリケーション側に、どのようにどのくらいのメモリを与えるのかなどを考えると、
できるだけ汎用的なものにしようとすれば、TCP先で利用できるlibaprのようなAPIを自分で作らないといけないし、、、
というような感じで、503さんとは少し論点がずれていたようです。
すみません。

だた、やっぱり基本的な考え方としてはFastCGIは
(Client → WebServer → FastCGI → CGI → FastCGI → WebServer → Client)
という形態ですので、アプリケーションサーバもFastCGIとほぼ同じで、
(Client → WebServer → AppServer → App → AppServer → WebServer → Client)
という形態になり、module型
(Client → WebServer(module型App) → Client)
の方が構成がかなり単純ですので、C言語で作ったCGIやAppの反応はかなり高速だと思います。
それに、やっぱりmodule型のC言語Appを一つ作る方が、
アプリケーションサーバとクライアントアプリケーションの両方を作るよりも遥かに楽だと思います。
それ以上に、FastCGIであれば、
FastCGI用C言語CGIを一つ作れば済みますので、労力は激減します。
ただ、やっぱりアプリケーションサーバはもとよりmocule型AppもCGIではありませんね。

あと、FastCGIはCGIプログラムをメモリ上に常駐させるのかさせないのかという違いで、基本的な仕組みはCGIと同じと考えて良いと思います。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch