ホームページ  >  記事  >  バックエンド開発  >  簡単なPHPエントリーソースプログラム_PHPチュートリアル

簡単なPHPエントリーソースプログラム_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 16:04:25712ブラウズ

「星空の放蕩者」PHP 中国語ドキュメントの例を引用:

チャット ルームは、Web サイト上の退屈な人々のための秘密兵器です。同時に、ウェブマスターやその他の担当者もここで時間を潰すことができます。オンラインで活発な恋愛をしている場合でも、少なくともタイピング速度を上げることはできます。
チャット ルームは、実際には複数の人が使用する CGI プログラムです。プログラムは、各人が入力した文字列を、システムが受信した時刻に従って並べ替えて、各ユーザーに送信します。 Web チャット ルームと BBS チャット ルームの違いは、BBS チャット ルームは受信したすべての文をチャット ルーム内のすべてのインターネット ユーザーに即座に配信できることです。Web CGI プログラムは BBS Telnet 回線のように常に接続できるわけではなく、Web CGI は情報を迅速に送信する必要があります。可能な限り選択してから接続を終了します。この状況は、Web チャット ルームが依然として HTTP 送信プロトコルを使用しているため、HTTP 実装のバージョンが、バージョン 0.9、1.0、または 1.1 のいずれであっても、ネットワーク接続ポートを長時間占有することができないために発生します。

データをすぐに送信できない問題と情報の更新の問題を解決するために、Netscape はブラウザのバージョン 3.0 以降の新しい技術を採用し、Internet Explorer も Netscape が開発したこれらの技術を実装しました。 Netscape では、これをサーバー プッシュとクライアント プルの 2 つのテクノロジーに分割しています。サーバー プッシュでは、Web サーバーからの複数の MIME エンコーディングを使用してユーザーにデータを送信しますが、クライアント プルでは HTML メタ タグと http-equiv="Refresh" 属性を使用します。読み込み時間に関しては、content 属性を使用して実現されます。

タグは通常、... のセクションに配置され、ブラウザがユーザー側の Web ページを更新できるようにします。以下は、15 秒ごとにリロードするように設定されたメタと PHP の例です。

チャット ルームの作成にサーバー プッシュまたはクライアント プルを使用しない場合、Webブラウザでチャットできるようにする他の方法はありますか?答えは「はい」です。 Java または ActiveX (IE4 および 5 に限定) を使用したり、独自の専用ブラウザ プラグイン プログラム (Qimo のチャット ルームなど) を開発したりすることもできますが、これは PHP とは関係がなく、私たちの焦点でもありません。

また、すべてのネチズンのメッセージは定期的に更新されるため、更新によって書きかけの文字列が消去されることを避けるために、チャットルームでフレーム技術を使用する必要があります。以下の例はチャット ルームのメイン プログラムです。


/title> <br><frameset rows="*,40" border=1> "list.php" name=リスト スクロール=自動> <br><frame src="post.php" <br><noframes> <br><body>あなたのブラウザは使用できません <br></noframes> <br><br><br><br><br> プログラムは 2 つの PHP プログラムを使用することをお勧めします。将来のメンテナンスのために、/chatroom などの同じディレクトリに配置してください。さらに、list.php と post.php で同じ変数を使用するために、次の例では、共通の変数パスを env.inc に配置します。これは、/chatroom または Web サーバーの PHP インクルードに配置できます。 Apache) を設定したパスに追加します。 <br><br><br><?php <br>// ファイル名: env.inc <br>$tempdir="/tmp/"; <br>$chatfile="/tmp/abc"; <br><br><br> チャット ルームのバックエンド設計は非常にシンプルで、ファイルを使用するだけで済みます。また、システムの効率を重視する場合は、プロセス通信に UNIX の IPC を使用することもできます。 <br><br>このセクションでは、ユーザー コメントの内容をファイルに入れる方法について説明します。ここでの例のほとんどは、UNIX/Linux 外部コマンドを使用します。システムにこのコマンド (またはプログラム) がない場合は、関連するプログラムをご自身でインストールしてください。 <br><br>実際、データをファイルにスローする方が、データベースを使用するよりも高速です。それでも速度を重視する場合は、UNIX マシンに RAM ディスクをインストールし、ファイル アクセス パスを RAM ディスクに設定して、確実にアクセスできるようにします。速度は厳しい要件を満たすことができます。高速検索エンジンとして宣伝している Web サイトの中には、データベース情報全体を RAM ディスクに保存しているものもあります。これにより、システム速度がすぐに 10 倍から 100 倍向上します。さらに、RAM の価格は他のソリューションに比べて比較的安価です。 Windows NT を使用している場合は、Microsoft が提供するのを待つか、サードパーティ製品を使用するしかありません。 <br><br>一部のユーザーは UNIX にあまり詳しくないかもしれません。使用するコマンドを簡単に紹介します。 <br><br>touch: 新しいファイルを作成するか、古いファイルの最終更新日を変更します。 <br><br>echo に 2 つの大なり記号を加えたもの: 文字列表示を指定された場所にリダイレクトします。 <br><br>tail: ファイル内のデータの最後の数行を表示します。デフォルト値は 10 行で、マイナス記号と数値を使用して表示する行数を変更できます。<br><br>以下は、メッセージ文字列の送信と処理を行うプログラムです。このプログラムは env.inc ファイルを使用します。 <br><br><br><?php <br>// ファイル名: post.php <br>require("env.inc"); <br>if (($chatuser!="") and ($chattext!="")) { <br> $ chatstr="<font color=8080ff>".date("h:i:s")."</font>-<font color=ff8080>".$chatuser."</font>: " .$chattext; <br> $cmdstr="echo "".$chatstr."" >> ".$chatfile; <br> if (!file_exists($chatfile)) passthru("touch ".$chatfile); $cmdstr); <br>?<html> <br><body bgcolor=ffffff leftmargin=0 marginheight=0 marginwidth=0> <br><form action=<?> Method=post> <br><table border=0 width=100%><tr> <br><td align=right> 匿名名:<td><input type=text name= chatuser size=8 value="<? echo $chatuser; ?>"></td> <br><td align=right>話す:</td> <br><td><input type= text name=chattext size=30 maxlength=500></td> <br><td><div align=right><input type=submit value="送信"></td> tr></table> <br></body> <br><br><br> 匿名および音声コンテンツ文字列が存在しない場合、プログラムは最初にチェックします。音声形式 (Form) を表示します。データがある場合は、文字列と現在時刻がファイルに保存されます (UNIX リダイレクト コマンドを使用)。もちろん、エラーを防ぐために、まずアーカイブできるファイルがあるかどうかを確認してください。ない場合は、最初にファイルをタッチします。この例では、ファイルは /tmp/abc です。 <br><br><html> <br><meta http-equiv="Refresh" content="5; url=<? echo $PHP_SELF; ?>"> <br><meta content="text/html; charset =gb2312" http-equiv=Content-Type> <br><body bgcolor=ffffff leftmargin=0 topmargin=0 marginheight=0 marginwidth=0> <br><? <br>// ファイル名: list.php <br>require("env. inc"); <br><br>if (!file_exists($chatfile)) { <br> echo "まだ開かれていません</body></html>"; <br> exit; <br>} <br><br>$uniqfile=$tempdir.uniqid(rand( )); <br>$shellcmd="/usr/bin/tail -50 " .$uniqfile($shellcmd); <br>$chatfilearray=file($uniqfile); count($chatfilearray); <br>for ($i=1; $i echo $chatfilearray[$j-$i]."<br>n"; $uniqfile); <br>?> <br></html> <br><br><br> 上記のプログラムは、5 秒ごとに更新されます。同様に、共有の env.inc ファイルも必要であり、その中の変数を変更する場合は、すべての Web プログラムで使用できる非常に重要な方法です。場所。たとえば、新しい年に「Copyright (C) 1996-2000」という文字列がファイルに配置されると、1 つのファイルが変更されるだけでサイト全体が変更されます。 <br><br>if (!file_exists($chatfile)) { <br> echo "まだ開かれていません</body></html>" <br> 終了; <br><br>$uniqfile=$tempdir.uniqid(rand()); $shellcmd="/usr/bin/tail -50 ".$chatfile. " > ".$uniqfile; <br>passthru($shellcmd); プログラムはまず、ユーザーがチャット コンテンツ ファイル /tmp/ を送信したかどうかを確認します。 abc 、そうでない場合は、まだ開いていないと表示され、ユーザーがチャット コンテンツを送信するのを待ちます。すでにチャット データがある場合は、最後の 50 件を取得し、別のファイルに表示する準備をします。 <br><br>$chatfilearray=file($uniqfile); <br>$j=count($chatfilearray); <br>for ($i=1; $i echo $chatfilearray[$j-$i ]."<br>n"; <br>} <br>unlink($uniqfile); <br><br> ファイルを配列変数 $chatfilearray に読み込み、最初に表示された最後のデータをブラウザに送信します。配列をソートする方法ですが、ある時点で格納された最後のデータが最後になるようにソートすると CPU 時間の無駄になるので、最後のデータから先頭のデータまでエコーします。使用後は、unlink() コマンドを使用して一時ファイルを強制終了する必要もあります。 <br> <br></p> <p align="left"></p> <div style="display:none;"> <span id="url" itemprop="url">http://www.bkjia.com/PHPjc/315988.html</span><span id="indexUrl" itemprop="indexUrl">www.bkjia.com</span><span id="isOriginal" itemprop="isOriginal">本当</span><span id="isBasedOnUrl" itemprop="isBasedOnUrl">http://www.bkjia.com/PHPjc/315988.html</span><span id="genre" itemprop="genre">技術記事</span><span id="description" itemprop="description"> PHP 中国語文書「星空の放蕩者」の例を引用: チャット ルームは、Web サイトで退屈な人々にとっての秘密兵器です。同時に、ウェブマスターやその他の担当者もここで時間を潰すことができます。投稿も…</span> </div> <div class="art_confoot"></div></div><div class="nphpQianMsg"><div class="clear"></div></div><div class="nphpQianSheng"><span>声明:</span><div>この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。</div></div></div><div class="nphpSytBox"><span>前の記事:<a class="dBlack" title="PHP 学習のための PHP 式_PHP チュートリアル" href="http://m.php.cn/ja/faq/311928.html">PHP 学習のための PHP 式_PHP チュートリアル</a></span><span>次の記事:<a class="dBlack" title="PHP 学習のための PHP 式_PHP チュートリアル" href="http://m.php.cn/ja/faq/311930.html">PHP 学習のための PHP 式_PHP チュートリアル</a></span></div><div class="nphpSytBox2"><div class="nphpZbktTitle"><h2>関連記事</h2><em><a href="http://m.php.cn/ja/article.html" class="bBlack"><i>続きを見る</i><b></b></a></em><div class="clear"></div></div><ul class="nphpXgwzList"><li><b></b><a href="http://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/ja/faq/2.html" title="正規表現内のすべての式記号 (概要)" class="aBlack">正規表現内のすべての式記号 (概要)</a><div class="clear"></div></li></ul></div></div><div class="nphpFoot"><div class="nphpFootBg"><ul class="nphpFootMenu"><li><a href="http://m.php.cn/ja/"><b class="icon1"></b><p>ホームページ</p></a></li><li><a href="http://m.php.cn/ja/course.html"><b class="icon2"></b><p>コース</p></a></li><li><a href="http://m.php.cn/ja/wenda.html"><b class="icon4"></b><p>に質問</p></a></li><li><a href="http://m.php.cn/ja/login"><b class="icon5"></b><p>私の</p></a></li><div class="clear"></div></ul></div></div><div class="nphpYouBox" style="display: none;"><div class="nphpYouBg"><div class="nphpYouTitle"><span onclick="$('.nphpYouBox').hide()"></span><a href="http://m.php.cn/ja/"></a><div class="clear"></div></div><ul class="nphpYouList"><li><a href="http://m.php.cn/ja/"><b class="icon1"></b><span>ホームページ</span><div class="clear"></div></a></li><li><a href="http://m.php.cn/ja/course.html"><b class="icon2"></b><span>コース</span><div class="clear"></div></a></li><li><a href="http://m.php.cn/ja/article.html"><b class="icon3"></b><span>記事</span><div class="clear"></div></a></li><li><a href="http://m.php.cn/ja/wenda.html"><b class="icon4"></b><span>に質問</span><div class="clear"></div></a></li><li><a href="http://m.php.cn/ja/dic.html"><b class="icon6"></b><span>辞書</span><div class="clear"></div></a></li><li><a href="http://m.php.cn/ja/course/type/99.html"><b class="icon7"></b><span>マニュアル</span><div class="clear"></div></a></li><li><a href="http://m.php.cn/ja/xiazai/"><b class="icon8"></b><span>ダウンロード</span><div class="clear"></div></a></li><li><a href="http://m.php.cn/ja/faq/zt" title="特集"><b class="icon12"></b><span>特集</span><div class="clear"></div></a></li><div class="clear"></div></ul></div></div><div class="nphpDing" style="display: none;"><div class="nphpDinglogo"><a href="http://m.php.cn/ja/"></a></div><div class="nphpNavIn1"><div class="swiper-container nphpNavSwiper1"><div class="swiper-wrapper"><div class="swiper-slide"><a href="http://m.php.cn/ja/" >ホームページ</a></div><div class="swiper-slide"><a href="http://m.php.cn/ja/article.html" class="hover">記事</a></div><div class="swiper-slide"><a href="http://m.php.cn/ja/wenda.html" >に質問</a></div><div class="swiper-slide"><a href="http://m.php.cn/ja/course.html" >コース</a></div><div class="swiper-slide"><a href="http://m.php.cn/ja/faq/zt" >特集</a></div><div class="swiper-slide"><a href="http://m.php.cn/ja/xiazai" >ダウンロード</a></div><div class="swiper-slide"><a href="http://m.php.cn/ja/game" >ゲーム</a></div><div class="swiper-slide"><a href="http://m.php.cn/ja/dic.html" >辞書</a></div><div class="clear"></div></div></div><div class="langadivs" ><a href="javascript:;" class="bg4 bglanguage"></a><div class="langadiv" ><a onclick="javascript:setlang('zh-cn');" class="language course-right-orders chooselan " href="javascript:;"><span>简体中文</span><span>(ZH-CN)</span></a><a onclick="javascript:setlang('en');" class="language course-right-orders chooselan " href="javascript:;"><span>English</span><span>(EN)</span></a><a onclick="javascript:setlang('zh-tw');" class="language course-right-orders chooselan " href="javascript:;"><span>繁体中文</span><span>(ZH-TW)</span></a><a onclick="javascript:;" class="language course-right-orders chooselan chooselanguage" href="javascript:;"><span>日本語</span><span>(JA)</span></a><a onclick="javascript:setlang('ko');" class="language course-right-orders chooselan " href="javascript:;"><span>한국어</span><span>(KO)</span></a><a onclick="javascript:setlang('ms');" class="language course-right-orders chooselan " href="javascript:;"><span>Melayu</span><span>(MS)</span></a><a onclick="javascript:setlang('fr');" class="language course-right-orders chooselan " href="javascript:;"><span>Français</span><span>(FR)</span></a><a onclick="javascript:setlang('de');" class="language course-right-orders chooselan " href="javascript:;"><span>Deutsch</span><span>(DE)</span></a></div></div><script> var swiper = new Swiper('.nphpNavSwiper1', { slidesPerView : 'auto', observer: true,//修改swiper自己或子元素时,自动初始化swiper observeParents: true,//修改swiper的父元素时,自动初始化swiper }); </script></div></div><!--顶部导航 end--><script>isLogin = 0;</script><script type="text/javascript" src="/static/layui/layui.js"></script><script type="text/javascript" src="/static/js/global.js?4.9.47"></script></div><script src="https://vdse.bdstatic.com//search-video.v1.min.js"></script><link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css' type='text/css' media='all'/><script type='text/javascript' src='/static/js/viewer.min.js?1'></script><script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script><script>jQuery.fn.wait = function (func, times, interval) { var _times = times || -1, //100次 _interval = interval || 20, //20毫秒每次 _self = this, _selector = this.selector, //选择器 _iIntervalID; //定时器id if( this.length ){ //如果已经获取到了,就直接执行函数 func && func.call(this); } else { _iIntervalID = setInterval(function() { if(!_times) { //是0就退出 clearInterval(_iIntervalID); } _times <= 0 || _times--; //如果是正数就 -- _self = $(_selector); //再次选择 if( _self.length ) { //判断是否取到 func && func.call(_self); clearInterval(_iIntervalID); } }, _interval); } return this; } $("table.syntaxhighlighter").wait(function() { $('table.syntaxhighlighter').append("<p class='cnblogs_code_footer'><span class='cnblogs_code_footer_icon'></span></p>"); }); $(document).on("click", ".cnblogs_code_footer",function(){ $(this).parents('table.syntaxhighlighter').css('display','inline-table');$(this).hide(); }); $('.nphpQianCont').viewer({navbar:true,title:false,toolbar:false,movable:false,viewed:function(){$('img').click(function(){$('.viewer-close').trigger('click');});}}); </script></body></html>