アカウント名:
パスワード:
IISって基本的にスレッドモデルだから、IISで動かすとするとCGIになるんだよね。いまどきCGI?またはWindows版Apacheで動かすの?
PythonやRubyも同様だけど、UNIX系のマルチスレッド非対応のスクリプト言語をWindowsで動かすにはプロセスベースのアプリサーバが必要だと思うんだけど、Windows用のプロセスベースのアプリサーバってほとんど聞かない。それを考えると、これらの言語はほとんど使われてないんではないかと思ってるんだけど。
ちなみにWindowsのサーバ用言語はVBScriptの時代から現在のC#に至るまですべてマルチスレッド対応で、スレッドモデルで動くのが当たり前。
> IISって基本的にスレッドモデルだから、IISで動かすとするとCGIになるんだよね。いまどきCGI?違います。PHPのサポート真面目にやるべ、ってなったとき(2007年)にFastCGIの仕組みをIISに用意したんでFCGIです。
当時の記事を見付けた。
MS、Windowsサーバ上でのPHP環境サポートでZendと提携 - ITmedia エンタープライズ [itmedia.co.jp] 2006年11月01日 06時59分 公開
両社が共同で行う技術改良は、オープンソースであるPHPライセンスの下でPHPコミュニティーに公開されることになる。Microsoftはこの提携の一環として、MicrosoftのWebサーバ「Internet Information Services」(IIS)とPHPをつなぐインタフェース「FastCGI」を開発し、無料で公開する。一方のZendは、Windowsサーバ上でのPHP環境のテストを定期的に行い、パフォーマンスの維持・向上に努める。
いまどきCGI?
今は、CGIを馬鹿にする方が一周回って時代遅れになってるんですよ。
理由としては、・サーバのスペック向上しているのでCGIを使うことによるオーバーヘッドなんてどうでもよくなってる・CGIの方がOSレベルでサンドボックス化できて脆弱性の影響を受けにくい・そもそもDDoS/DoS対策も兼ねてCDN・リバースプロキシの導入が当たり前になっているので、静的コンテンツで生じるCGIの負荷なんてキャッシュ時のみ・動的コンテンツでもボルトネックはデータベース関係の負荷なので、CGIによる負荷なんてどうでもいいなど。
つまりは、CGI使ってもいいし、使わなくてもいい。今時そんなことは全体の負荷からすると誤差なのでどうでもいいので、「いまどきCGI?」と否定する理由が無くなったということです。
FaaSとかCaaSってほぼCGIだしね。I/Fが独自なだけで。
コモンゲートウェイインターフェースだからそのインターフェースが一番重要なのだが…。逆にインターフェースさえ満たしていればプロセス起動によって実装される必要もないはずだが
一昔前は、本番環境や共有の開発環境はLinuxだけど、各開発者のローカルの開発環境はWindowsなのでWindows版PHP、ってことはちょくちょくあったと思う(俺もやってた)。もっとも、環境依存のトラブルも多かったから、仮想マシンが普及してからはみんなローカルでもVMのLinuxで動かしていると思うけど。
未だに開発はwindowsですわ。だって楽なんだもの。
Windows上での開発はちょっと選択肢が増えすぎて悩むくらいですね。WindowsネイティブのPHPもまあ大体動くし、PHP組み込みサーバーで簡単なアプリ動かすとかはやっぱありうる。
IISのPHPは古典的なCGIじゃなくFastCGIだしイマドキLinuxのApacheでもPHPはfpmを呼ぶ構成にするっしょ(当然MPMはeventモデルで)
Composerを動かすのにいるんじゃなかったっけ。
それと、とあるPHPスクリプトを動かすのに使ってる。
PHP には TS (Thread safe) 版と NTS (Non thread safe) 版の 2 モデルあり、
IIS の ISAPI やら Apache の module やら、モジュールとして利用されるのは、マルチスレッドで稼働できる TS 版のほう。
CGI や FastCGI は、シングルスレッドで実装できるので NTS 版が利用できる。
因みに「カレントディレクトリ」は、プロセスの属性なのに… マルチスレッド対応の TS 版で chdir はどうやって実装しているの…? という疑問があると思います。
これは TSRM (Thread safe resource manager) という機構があり「カレントディレクトリ」をシミュレーションできる設計になっています。
しかし gettext など、ホンモノの「カレントディレクトリ」が必要なライブラリは TS 版では期待通りに動作しない問題があります。
そういったケースでは FastCGI + NTS 版 PHP が適当な選択肢になるのでしょうか。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
ナニゲにアレゲなのは、ナニゲなアレゲ -- アレゲ研究家
Windows版PHPってどれだけ使われてるの (スコア:0)
IISって基本的にスレッドモデルだから、IISで動かすとするとCGIになるんだよね。いまどきCGI?
またはWindows版Apacheで動かすの?
PythonやRubyも同様だけど、UNIX系のマルチスレッド非対応のスクリプト言語をWindowsで動かすにはプロセスベースのアプリサーバが必要だと思うんだけど、
Windows用のプロセスベースのアプリサーバってほとんど聞かない。
それを考えると、これらの言語はほとんど使われてないんではないかと思ってるんだけど。
ちなみにWindowsのサーバ用言語はVBScriptの時代から現在のC#に至るまですべてマルチスレッド対応で、スレッドモデルで動くのが当たり前。
Re:Windows版PHPってどれだけ使われてるの (スコア:1)
> IISって基本的にスレッドモデルだから、IISで動かすとするとCGIになるんだよね。いまどきCGI?
違います。
PHPのサポート真面目にやるべ、ってなったとき(2007年)にFastCGIの仕組みをIISに用意したんでFCGIです。
Re: (スコア:0)
当時の記事を見付けた。
MS、Windowsサーバ上でのPHP環境サポートでZendと提携 - ITmedia エンタープライズ [itmedia.co.jp] 2006年11月01日 06時59分 公開
CGI を馬鹿にする方が時代遅れ (スコア:1)
いまどきCGI?
今は、CGIを馬鹿にする方が一周回って時代遅れになってるんですよ。
理由としては、
・サーバのスペック向上しているのでCGIを使うことによるオーバーヘッドなんてどうでもよくなってる
・CGIの方がOSレベルでサンドボックス化できて脆弱性の影響を受けにくい
・そもそもDDoS/DoS対策も兼ねてCDN・リバースプロキシの導入が当たり前になっているので、静的コンテンツで生じるCGIの負荷なんてキャッシュ時のみ
・動的コンテンツでもボルトネックはデータベース関係の負荷なので、CGIによる負荷なんてどうでもいい
など。
つまりは、CGI使ってもいいし、使わなくてもいい。
今時そんなことは全体の負荷からすると誤差なのでどうでもいいので、「いまどきCGI?」と否定する理由が無くなったということです。
Re: (スコア:0)
FaaSとかCaaSってほぼCGIだしね。I/Fが独自なだけで。
Re: (スコア:0)
コモンゲートウェイインターフェースだからそのインターフェースが一番重要なのだが…。
逆にインターフェースさえ満たしていればプロセス起動によって実装される必要もないはずだが
Re: (スコア:0)
一昔前は、本番環境や共有の開発環境はLinuxだけど、各開発者のローカルの開発環境はWindowsなのでWindows版PHP、ってことはちょくちょくあったと思う(俺もやってた)。
もっとも、環境依存のトラブルも多かったから、仮想マシンが普及してからはみんなローカルでもVMのLinuxで動かしていると思うけど。
Re: (スコア:0)
未だに開発はwindowsですわ。
だって楽なんだもの。
Re: (スコア:0)
Windows上での開発はちょっと選択肢が増えすぎて悩むくらいですね。
WindowsネイティブのPHPもまあ大体動くし、PHP組み込みサーバーで簡単なアプリ動かすとかはやっぱありうる。
Re: (スコア:0)
IISのPHPは古典的なCGIじゃなくFastCGIだし
イマドキLinuxのApacheでもPHPはfpmを呼ぶ構成にするっしょ(当然MPMはeventモデルで)
Re: (スコア:0)
Composerを動かすのにいるんじゃなかったっけ。
それと、とあるPHPスクリプトを動かすのに使ってる。
Re: (スコア:0)
PHP には TS (Thread safe) 版と NTS (Non thread safe) 版の 2 モデルあり、
IIS の ISAPI やら Apache の module やら、モジュールとして利用されるのは、マルチスレッドで稼働できる TS 版のほう。
CGI や FastCGI は、シングルスレッドで実装できるので NTS 版が利用できる。
因みに「カレントディレクトリ」は、プロセスの属性なのに… マルチスレッド対応の TS 版で chdir はどうやって実装しているの…? という疑問があると思います。
これは TSRM (Thread safe resource manager) という機構があり「カレントディレクトリ」をシミュレーションできる設計になっています。
しかし gettext など、ホンモノの「カレントディレクトリ」が必要なライブラリは TS 版では期待通りに動作しない問題があります。
そういったケースでは FastCGI + NTS 版 PHP が適当な選択肢になるのでしょうか。