[PHP-users 14894]Re: 他サーバーからのDBデータ参照について
NAKAMURA Takeshi
1yen @ sh.rim.or.jp
2003年 4月 24日 (木) 21:48:35 JST
仲村です。
大変そうですね...
From: lavlav @ paw.hi-ho.ne.jp
Date: Thu, 24 Apr 2003 21:23:14 +0900
Subject: [PHP-users 14892] Re: 他サーバーからのDBデータ参照について
>> クリック広告では、広告を(渡されるIDなどの値によって差し替え)表示するプ
>> ログラムをAサーバーに設置し、掲載サイト(Bサーバー)側に設置したプログラム
>> からソケット通信でAサーバーに広告を取りに行く。という処理になります。
>
> まず、ソケット接続とは何?と言った感じです。
Unix と、いうのは全て file として扱います。ですから、ネットワークも
socket file という file を開き、
そのファイルへ書く == ネットワークへデータを送る
そのファイルを読む == ネットワークからデータを読む
と、なります。
> マニュアルを見てもそこらへんは記述しておりませんし、
man socket
# http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&cmd=&man=socket&dir=jpman-5.0.0%2Fman§=0
> 参考になるWEBサイトが見つかりません。
たしかに、Web サイトには少ないですね。私も何度か探したことがありますが
あまり参考になるサイトはありませんでした。
> マニュアルの例で言わせてもらいますと、
>
> $fp = fsockopen ("www.php.net", 80, $errno, $errstr, 30);
>
> www.php.netをport80でオープンするって意味だと思うのですが、
> なんでwww.php.netなんかオープンするの?
www.php.net をオープンするのではなく、
ホスト www.php.net の ポート 80 へ接続(socket file)を開くのです。
> 普通のファイルオープン(fopen())の感覚で言うと、
>
> fputs ($fp, "GET / HTTP/1.0\r\nHost: www.php.net\r\n\r\n");
>
> はいっ?何に書き込んでる訳?と言った感じです。
www.php.net の 80番ポートにデータを億ってます。
telnet で 80 番ポートを叩く時を考えると簡単かと。
===
$ cat > ふぁいる
GET / HTTP/1.0
Host: www.php.net
^D
====
$ telnet www.php.net 80
GET / HTTP/1.0
Host: www.php.net
===
一方は、ネットワークに 一方はファイルに書いていますが
改行を叩いた後のデータの送り方は同じですよね。
> while (!feof($fp)) {
> echo fgets ($fp,128);
> }
>
> 何を出力してるの?
>
> これだと、www.php.net を出力??
telent で、80番ポートを叩いて理解しましょう(^^;;;;;
今まで出てきた
1. ホスト www.php.het
2. ポート 80
3. 文字列 GET / HTTP/1.1\n\rHost: www.php.net\n\r\n\r
これを全て繋げると分かるのではないでしょうか。
日本語訳の RFC を読みながらいじってみるとすぐに分かると思います。
# Squidなど proxy の log があれば、それを見るのも助けになるかも知れません。
> 仕事で期限がなく大変困ってしまいました。
> どうか皆様の知恵をお借り出来たらと思います。
> よろしくお願いいたします。
私はプログラマーではありませんが、そんな私がかなり危険な状態だなぁと思います。
頑張ってくださいとしか言えないですが。頑張ってください。
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+
関西沖縄青年の集い がじまるの会 手伝い 一人だけの勝手に神奈川支部
仲村 武 <1yen @ sh.rim.or.jp>
PHP-users メーリングリストの案内