3

PHP を使用してライブ Web サイトを作成する方法を探していました。(COMET) もうずっと探していました。(約 1 か月) いくつかの PHP チャット スクリプトをチェックして、自分の Web サーバーで使用しましたが、ほとんどのスクリプトで問題が発生しました。(説明します)

これまでのところ、ほとんどの人が同じことを言っています: PHP は、COMET で使用できる最適な言語ではありません。チャット/コメットの例はせいぜいハックです。

ログインした人が互いにチャットできるようにするなど、Webサイトにいくつかの機能を追加したいので、これを求めています。それが、PHP ページへの有効な接続が必要な場所です。また、ブラウザ ベースのゲームを作成する予定であり、ライブ接続は引き続き必須です。

AJAX は 2 年前には珍しく、Facebook とともに輝いていました。今ではほとんどの人が使用しており、Web 開発の標準となっています。現在、COMET ベースの Web サイトが成長しています。Youtube、Google+、Facebook、EA の Battlelog など。使い方を学ぶべきだと思います。

さて、ここに私の質問があります。(以下の情報の一部は、Google で検索して収集したものです。正しいかどうかはわかりません。)

  1. Python などの一部の言語には、このジョブ用に設計された特別な Web サーバーがあります。それらの 1 つが Tornado Web Server と呼ばれるものだと思います。何千ものアクティブな接続をシミュレートするように開発および構成されています。Appserv にはそのようなオプションはないと思いますが、適切な構成で NGINX を処理できると言う人もいます。本当ですか?どのような構成を行う必要がありますか? この仕事のための PHP Web サーバーはありますか?

  2. 最も推奨されるもののいくつかは次のとおりです。

    a. APEを使用。

    b. Socket.IO の使用

    c. Node.js

    PHPでそれらを使用する方法はありますか? どれが最も有望ですか?それらについてのガイダンスを教えていただけますか?これら以外に何かありますか?

  3. コメット チャット スクリプトを使用しました。基本的には、データベースにクエリを実行し続け、ループ内で usleep() でスリープさせて、flush() で結果をブラウザーに出力します。(これはわかりにくかったので、簡単なコードを提供します)

    while(true)
    {
        // query database
       // output the result
       // flush the browser
       // sleep for few seconds to lower cpu load 
    }
    

usleep()関数は基本的に、Windows ベースのオペレーティング システム上の Web サーバーを破壊しました。usleep()Windows ベースの OS で実行されるコメット アプリケーションに依存するのは普通ですか? つまり、PHP スクリプトを「スリープ」する方法さえありますか? 何をしても、WIN サーバーと UNIX サーバーの両方で CPU 負荷が %100 になります。

  1. PHP はこの分野で「本当に」弱いのでしょうか? PHP をあきらめて、他の言語に集中するべきですか? もしそうなら、どの言語をお勧めしますか? (その言語は有望なはずです。たとえば、HTML5 追加後、AS3 はあまり使用されなくなり、AS3 は JS が輝いている間にすぐに死ぬ可能性が高くなります。)

  2. WebSync とは何ですか? PHPで使えますか?

次のアプリケーションを作成するには COMET を使用する必要があることに注意してください。

  • ログインしているプレイヤーが互いにチャットできるチャット スクリプト。
  • ブラウザベースのゲーム。すでにJSON/AJAXなどを使ってコーディングしているのですが、相手のステップを受け取るにはデータを引っ張る必要があるので、Alive接続が必要です。(高度なゲームを想像しないでください。せいぜいチェスのようなゲームについて話しているだけです。)

簡単なご案内をいただければ幸いです。結局のところ、インターネット上には非常に多くのランダムな記事があるので、私は毎日混乱しています. 人setInterval()はCOMETと呼んでいるので、完全に混乱しています。

4

2 に答える 2

1

ここでいくつかの説明が必要です。あなたが探しているのは、言語固有のものではありません。コメット機能を PHP で実現したい場合は、Web サーバー (Apache など) に依存して HTTP ストリーミングを実行します。また、これは HTTP/1.1 より前の HTTP バージョンではサポートされていないことを理解する必要があります。そうは言っても、非ブロッキング イベント ベースの Web サーバーが必要な場合は、提案されているように Tornado と Node を検討することをお勧めします。

于 2012-05-03T22:06:39.760 に答える