調べたこと 第八回
プログラミング言語には、インタプリタ形式とコンパイラ形式の2つの種類がある。
インタプリタ ー> プログラマが記述したプログラムを解釈しながら実行
テキストエディタさえあれば書けて、修正しやすいという利点。
速度がおそいので、文法ミスがあるか分かるのも遅い。
コンパイラ ー> バイナリコード(機械にしかわからないコード)に変換したプログラムで、処理速度が早くなる。(コンパイルするということをビルドするという)
プログラムを隠しておける。文法ミスがあれば、コンパイルする時点で発見できる。
コンパイラを用意しないといけない。(Javaなどが含まれる。)
Webサーバでどのようにプログラムが実行されているか?
まず、Webサーバソフトがポート80番や443番などで待っている。
そこに、クライアントがコマンドを送って来たら、その送られてきた内容を返すという仕組みになっている。
サーバ上のプログラムを実行するときに使う。
#!/ usr /bin/○○○ -> この丸のところにプログラムの名前を入れるとどのプログラム
echo でも実行できる。
echo
(ちゃんと画像データなども返すことができる)
大きな2つの問題がある
1,#!プログラム名 とするだけで、実行できることからセキュリティ的に弱い
2,アクセスしているユーザーの数だけCGIが作られるので、大きなメモリが必要と
なり、実行環境の読み込みにも時間がかかることからパフォーマンスが良くない
↓ そこで
モジュール
アパッチなどのWebサーバにあらかじめ、それぞれのプログラムの環境を組んでおくしくみのこと。
すでにWebサーバと動いていて要求に応じて読み込む必要がなく、ユーザーの数だけ実行されるわけではないので、CGIの問題をカバーしている。
入力フォームの仕組み
HTMLでおなじみの<form>~</form>で囲われてるとこ。
inputタグの name='' はサーバ側でその名前として取得できる。
formタグのmethod にはGET or POST を指定できる。
GET ー> search.php?username=入力された値&email=入力された値
↑
クエリ文字列(querystring)
⦿キャッシュされる。
⦿大きなデータを送信できない。
⦿検索エンジンの結果などに使われる。
POST ー> search.php?username の後、入力されたデータを要求に続けて送信する。
⦿キャッシュが残らない。
⦿大きなデータを送信できる。
⦿申し込みページや購入ページなどに使われる。
これら2つの方法でデータが送信されるときには、URLエンコードという特別な変換がされる。
?や& が入力フォームのフィールドで区切りとして使われるので、混同を防ぐために、最初から漢字や記号は%16進数で表される。