Web サイトを構築する場合、ほとんどの場合、静的な Web ページへのアクセスを提供するだけでなく、ブラウザ ユーザーと対話したり、リアルタイムの更新情報を提供するためにバックエンド データベースにアクセスしたりすることも必要になります。 、動的 Web ページ サービス機能を提供する必要があります。このとき、従来の CGI を選択するべきでしょうか、それとも PHP や ASP などのサーバーサイド スクリプトを選択するべきでしょうか?
■ CGI からサーバーサイドスクリプトへ
動的 Web ページを作成する標準的な方法は CGI です。これにより、Web サーバーはブラウザーのリクエストに応じて CGI プログラムを実行できます。単純な CGI 標準に準拠することを除けば、CGI プログラムの開発は通常のプログラムの開発と何ら変わりません。ただし、生成される動的 Web ページの数と複雑さが増加するにつれて、このアプローチは困難に直面します。
CGI プログラムは 2 つの主要な部分で構成されます。1 つはプログラム コードで、もう 1 つは出力される HTML 文書の内容 (HTML コードと呼ぶことができます) です。初期の Web 開発者はプログラマーと Web デザイナーの両方を兼ねていましたが、当時の開発者が最も関心を持っていたのはプログラム コードであり、ページ コードは基本的にあまり調整する必要がありませんでした。 DHTML や JavaScript などの技術の発展により、ページは非常に複雑に設計できるようになりましたが、さまざまな CGI プログラム ライブラリの登場により、プログラム コードは非常に単純になりました。このように、ページコードを調整するたびにCGIプログラムの修正が必要となり、最終的にはCGIプログラムのデバッグ作業において、プログラムコードのデバッグ作業量よりもHTMLコードのデバッグ作業量の方が多くなってしまう。これは、Web 開発において HTML コードの重要性が非常に明らかになり、プログラム コードを中心とした従来の CGI プログラムが動的な Web ページを処理する最適な方法ではなくなっていることを示しています。
このように、特にインターネットの商用化により、CGI プログラムを書くことと HTML ページをデザインすることは、この種の HTML コードを調整する作業にうんざりしているプログラマーが少なくありません。この問題を解決するために、プログラマーはまずテンプレート ファイル方式を使用してプログラム コードと HTML コードを分離し、CGI プログラムがテンプレート ファイルを読み取って HTML コードを取得するようにしました。これにより、ページに微調整を加える必要がなくなりました。 CGI プログラムを変更します。
基本的に、すべてのプログラマーは独自の CGI プログラムでカスタマイズされたテンプレートを使用しますが、汎用の HTML テンプレートがあり、汎用プログラムを前処理に使用すると、プログラム設計の負荷が大幅に軽減されます。最も単純なテンプレートは、テンプレート内の事前定義された変数を置き換えることで解釈作業を完了できます。このプログラムは、Web サーバーに統合されており、CGI プログラムよりも高い効率を実現します。
ncsa httpd に登場した SSI など、これらの初期のサーバーサイド スクリプトには、変数の概念のみが含まれており、制御ステートメントの概念は含まれていませんでした。その後、さまざまなプログラム開発者が、制御ステートメントやサブルーチンさえもサポートするスクリプト解釈処理プログラムを再開発しました。これにより、これらのプログラムは、特定の動的な Web ページにサービスを提供するだけでなく、プログラミングもできるようになり、CGI プログラムが実行できるすべてを完了できるようになりました。 . 仕事は新しいプログラミング言語になりました。また、パフォーマンス上の理由から、これらのプログラムは Web サーバー自体に組み込まれ、Web 開発の新しい形式になりました。
■ オープンリソースからの PHP
現在、動的 Web ページを開発するにはサーバーサイド スクリプトが一般的な方法ですが、CGI には柔軟性という利点がありますが、一般的にはサーバーサイド スクリプトが一般的です。より使いやすく、より便利に。ただし、CGI とは異なり、サーバーサイド スクリプトには統一された標準がなく、さまざまなサーバーサイド スクリプトが独自の構文を使用します。現在、より一般的に使用されているものは、Active Server Pages (ASP)、ColdFusion、Java Servlets、Personal Home Page (PHP) などです。これらの技術には、ASP などの大企業がサポートするソフトウェアと、PHP などインターネットを介して共同開発されたオープンソース ソフトウェアの両方が含まれます。
PHP は、もともと Rasums Lerdorf によって書かれた単純な CGI プログラムで、彼自身の Web ページへの訪問者を記録します。その後、C言語で書き直され、データベースにアクセスできるように範囲が拡張されました。この期間中、多くの人が、自分で使用するためにこのプログラムのコピーを Rasums Lerdorf に求め、このプログラムを紹介する文書を作成し、PHP v1.0 をリリースしました。その後、PHP を使用する人が増え、ループ ステートメントや配列変数などの他の機能の追加を強く求めるようになりました。このとき、他のプログラマーも PHP のソース コードの作成に参加し、PHP を書き直しました。 v3.0が登場しました。現在、PHP を使用する Web サイトは 800,000 を超え、その数は今も増え続けています。
除了向浏览器发送动态网页之外,PHP还能发送不同HTTP头标识,使其能提供网页重定位、与Web服务器的安全认证结合的能力、以及设置Cookie。PHP能提供与多种数据库直接互联的能力,包括MySQL、Sybase、Informix、Oracle、MsSQL等,也能支持ODBC。并通过额外的库能够支持会话管理和XML处理(这些库都是基本的库,因此也是PHP用户的基本配置)。从这里我们可以看出,PHP已经不再是简单的服务器端脚本了,按照《PHP3浏览器应用编程》的作者David Medinets的话,PHP是一种应用服务器。因为它不仅仅包括一个完整的编程语言,而且还包括完整的访问数据库的能力、支持Internet协议(如电子邮件和HTTP)的能力,这一整套技术使得PHP能与ASP、ColdFusion、WebSphere互较短长。
要运行PHP,通常使用Linux或FreeBSD作为操作系统,使用Apache作为Web服务器。当然使用其他操作系统也同样可行,这是因为PHP是一种跨平台的软件,这当然得益于它是开放源代码的软件。但是,如果不使用Apache服务器,那么PHP就只能以CGI的方式运行,这样就不能利用将PHP编译进Apache带来的性能优势。当从www.php3.net中下载了最新版本的PHP并安装配置完毕之后,就可以使用编辑器或网页制作软件来编写PHP代码了。如果你能使用C或Perl进行编程,就会发现PHP编程并不复杂,作为程序语言的PHP比C简单,比Perl易懂。下面是一个最简单的嵌入PHP程序的页面。
〈HTML〉
〈HEAD〉〈TITLE〉Test〈/TITLE〉〈/HEAD〉
〈BODY〉
〈?PHP $string = ’world!’; ?〉
〈H1〉Hello,〈?php echo $string ?〉〈/H1〉
〈/BODY〉
〈/HTML〉
在HTML网页中嵌入的PHP代码,需要以标记结束。上面这个页面将显示Hello,world!的结果。这里可以看出,PHP程序语法与C或Perl非常类似。事实上,PHP来源于C和Perl,支持C和Perl大部分语法和操作符,因此使用PHP对C和Perl程序员都是非常简单的事情。
■选择PHP
虽然PHP已经十分流行,但在国内了解它的人却很少,这当然是因为它不是商业软件,缺乏市场运作。即使在听说过PHP的人们中,不少人也抱有这样的看法,PHP既没有商业公司的支持,又缺乏商业的图形化开发工具,PHP能够和ASP等商业软件一样有前途吗?的确,ASP由于有微软公司的支持,使得它迅速变得十分流行,现在书店中充斥着ASP的相关书籍,而很少能找到介绍PHP的著作,正说明了国内的这种流行趋势。然而,过去一年中整个互联网中PHP使用者稳步增长的事实,却与这些观点截然相反。我认为那些不看重PHP的人至少忽略了以下几个原因:
1. PHP已经证明是非常实用的软件,性能、可靠性、稳定性非常高,借一个来自武侠小说的比喻,PHP就如同来自江湖下层一步步成名的草莽英雄,而商业软件则如同出身高贵的少年侠士,其成名的原因与其师傅和门派密切相关。PHP具备各种数据类型并支持复杂的文本处理,它甚至支持面向对象,能配置为处理XML等等;更为重要的是PHP的这些功能都是非常实用的,要知道PHP的开发者都是根据自己的需要自愿进行的开发,它具备的功能一定是有着实际用途的。虽不能说PHP比同类产品强,但其实力不容忽视。
2. PHP是跨平台的产品,它能运行在多种Unix以及Windows NT上,并能访问多种不同的数据库,对很多人来讲,这一点非常重要。商业产品通常要求非常苛刻,只能和特定的操作系统和数据库相互协作。而人们喜欢使用自己已经熟悉的操作系统、Web服务器和数据库,如Linux、Apache和MySQL。
3. PHP是开放源代码的软件,很多人对此不以为然,然而他们忽视了占Web服务器市场58%的Apache服务器,忽视了Linux、FreeBSD等开放源代码的操作系统,这些开放源代码的软件结合在一起,就形成了一个非常有效的解决方案。
4. 即便不考虑源代码的因素,PHP不需要任何费用的特点也是商业软件无法相比的。虽然ASP也是免费的,然而很多人忽视了运行Windows NT及MS SQL的费用,而PHP和Linux/FreeBSD、Apache、MySQL相互合作,几乎不需要任何软件费用,当前如果不考虑盗版,究竟有多少人还会坚持ASP呢?
5. PHP有良好的技术支持,可以通过电子邮件、论坛、网页、IRC等方式获得技术支持。这听起来有些好笑,难道这比商业软件的技术支持更有效吗?事实上依我个人使用商业软件和开放源代码软件的经验,这种技术支持形式相当不错,设想一下,你能够得到来自ASP开发组的技术服务吗?我想更常见的结果是在一通800电话之后,得到的只是一堆无用的建议,最后你终于厌倦了转来转去的电话。即便是现场服务,也许是某个工程师在一遍又一遍地重装系统,直到系统偶然地运行正常为止,这样也好,系统管理员至少可以装作什么都不懂的样子稍事休息一下。而开放源代码使你能提出更接近故障本质的现象,不但遇到过同样现象的使用者会提供帮助,PHP的开发者也能提供帮助。有什么技术支持比几十万个使用者,其中大多数都是使用PHP的老手,提供的帮助更有效呢。
无论如何,商业支持并不是一个软件流行的必要条件,反过来倒是正确的,最近的例子Linux不就是由于流行而得到了商业支持的吗?例如最新版本的网页制作工具DreamWaver 3.0,也开始支持PHP的标记,允许在其中直接进行PHP代码的编写了。越来越多的国内Web开发者也开始将目光投向PHP,其中大多数选择了Unix (Linux,FreeBSD, Solaris, AIX, HP-UX等等)作为Web站点的操作系统,而国内出版计算机图书的出版社也会陆续出版一些PHP的著作,显然这又会有利于PHP的推广和发展。