• ベストアンサー

ファイル処理とソケット通信

データサーバをC言語で画面をPHPで作ってます。 最初はPHP側でSUBMITしたら入力内容をファイルに保存して C言語側ではそのファイルを監視して処理を行っていました。 画面が表示されるまで70msecでもっと早くしたかったので ファイル処理をブロッキングするソケット通信に変更しました。 早くなったと思いましたが結果は1000msecで遅くなりました。 普通に考えるとソケットの方が早いと思うのですが 上手く同期を取れば早くなるのでしょうか? また他にphpとの連携で早い方法がありましたら ご教授お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • wormhole
  • ベストアンサー率28% (1619/5653)
回答No.1

phpの拡張モジュールとしてつくるのは?

その他の回答 (1)

回答No.2

比べているものが違うとか? > 最初はPHP側でSUBMITしたら入力内容をファイルに保存して > C言語側ではそのファイルを監視して処理を行っていました。 の時に測定していたのは、PHPが入力内容をファイルに保存するのにかかる時間で、 > ファイル処理をブロッキングするソケット通信に変更しました。 の時に測定していたのが、入力内容をソケットに書き込み、データベースサーバーで処理をして、処理完了の応答を返すまでの時間 だとすると、後者のほうが明らかに遅そうです。後者だと、データをソケットを通して送るのに加えて、処理を待つ時間も含まれますから。 データベースサーバーが受付だけして、実際の処理をせずに応答するようにしても、データベースサーバーにコンテキストスイッチをして、そこでデータを読まないと処理が進まないので、単純にファイルにデータを書くのより少し遅そうですね。(1バイトずつデータを送るようなよほど馬鹿なコードを書いていない限り、これだけで10倍以上も遅くなるとは思えませんが) また、そのデータベースサーバーが1スレッドで処理をしているとしたら、他のPHPスクリプトが処理を依頼している間ずっと待たされそうで、全然スケールしなそうです。 それぞれが何を測定しているのかをまず明らかにしてみましょう。 そして、可能な限り無駄な待ち合わせを削ったほうがいいですね。

ICF03207
質問者

補足

> 比べているものが違うとか? 比べているものは同じでページが表示されるまでの 時間です。 原因はおそらくキャッシュで同じページを リロードしたことが原因だとおもいます。 どうもファイルの方がキャッシュされやすいみたい です。

関連するQ&A

  • ソケット通信プログラムのヘッダファイルについて

    失礼します。現在Visual Studio 2005でC言語を使ってソケット通信のプログラムを作ろうとしています。 複数のサイトでサンプルプログラムを見つけたのですが、<sys/socket.h>等のヘッダファイルをインクルードしています。 これらのヘッダファイルは自分で作成するのでしょうか? もしわかる方がいましたら教えてください。お願いします。

  • ソケットで通信できない

    Solaris + C で作成したプログラムAと、 PC上のVBで作成されたアプリBとの通信を行おうとしていま。 PC側のVBで、 Winsock.LocalPort = 3000 Winsock.Listen の処理があります。 Aではソケットの生成(socket)→接続(connest)→書込み(write)を行っていますが、すべて成功している模様です。 ・・が、VB側のWinsock_DataArrivaでブレークしていても、一向に受信する気配がありません。 VB及びソケットに関して、ほとんど知識がないので上記処理であっているかも分かっていません。 解決策をご存知の方がおられましたら、ご教授願いたく。

  • Winsockの通信処理にてファイル転送方法?

    環境:Windows2000とUNIXサーバ 開発:VisualStadioVer6.0 言語:C言語 やりたいこと:    クライアントからサーバにファイル送信を行う。 ただし、FTP通信を使わないで、別ポートにて、Winsockの send等でFTPもどきのファイル送信を行いたい。 ソケット通信はデータ送信なのは知っているのですが、 どうしても実現したいので、知ってる方は教えてください。

  • c# ソケット非同期通信プログラム

    C#でソケット非同期通信プログラムを作りたいと思い勉強しております。ちなみにソケット通信はc言語ではやっておりました。 今作りたいと思ってるプログラム ・ラジオボタンで接続形態(サーバー・クライアント)を選択。 ・送信ボタンを押した時は送信 ・受信した時は受信データをテキストボックスに表示 ・コネクション数は1つで送受信を行う お手数ではございますが、参考になる様なサイトやアドバイス等があれば宜しくお願い致します。

  • ソケット通信で接続クライアントの上限を設ける

    (Unix c言語) ソケット通信で、サーバに接続するクラインとの上限をきめてそれ以上の数の接続要求があった場合、そのクライアントに対しての接続を拒否するには、サーバ側とクライアント側でどのような書き方をすればいいでしょうか?

  • 異なる言語間でのソケット通信について

    簡単なネットワークプログラムを作成して、ソケット通信の確認をしています。 クライアントとサーバが両方ともにC++の場合と、両方ともにJavaの場合で、正常に通信が行われていることは確認しました。 そこで、クライアントでC++のプログラムを動かし、サーバでJavaのプログラムを動かしてみたのですが、うまくいきませんでした。 (ポート番号を合わせたので、相互接続は出来てるみたいですが、データが渡ってきませんでした。OSはクライアント/サーバともに、Windowsです。) 言語が異なる場合の、ソケット通信について良いサイトをご存知でしたら、教えていただけないでしょうか?

    • ベストアンサー
    • Java
  • c言語にてソケット通信

    linux環境のc言語にてソケット通信のプログラムを作成しています。 UDP通信にてヘッダを書き換える必要があるためrawソケットを使用し、複数ある ネットワークインターフェース(eth0、eth1など)を引数にして使用したいのですが、どうしたら使い分けできるので しょうか。

  • ソケット通信の可否について

    富士通バリュースターを使っているのですが、C言語でUDPソケット通信のプログラムを作成した場合、標準でコンパイルして実行まで出来るのですか?何かインストールする必要はありますか?OSはwindows8です。ご教授お願いします。

  • Javaベースの端末からソケット通信で

    windowsのクリップボードに直接アクセスする方法ってあるのでしょうか? windows側にソフトを作ってソケットを監視させ、そこからクリップボードにデータを渡す処理なら、なんとなく考え付くのですが、windows側にはなるべくソフトを入れたくないと考えています。 処理するデータはテキストだけなのですが、そういうことは可能なのでしょうか? どなたかご教示願えれば助かります。

  • VB6で画像ファイルのソケット通信

    VB6で画像ファイルのソケット通信をしなければいけなくて、 サンプルソースを探しているのですが、どなたか すごくシンプルでもよいので教えて頂けないでしょうか。 javaやCなどのサンプルは見つかるのですがVB6しか分からなくて 困ってます。文字列のやりとりのサンプルはありましたが、 画像ファイル(JPEGとかTIFとか)をやり取りするときの バイナリ(?)で送って、受取ってというところのサンプルが ほしいのです。。どなたか助けてください。

専門家に質問してみよう