-1

オンラインのユーザー数に応じて、ホタルを入れたい瓶を作成しました。

少し掘り下げて、XMLSocketの作成方法を見つけました。それは機能しましたが、何人の人がオンラインであるかという情報を取得する方法がわかりませんでした。また、常に実行するにはCMDウィンドウが必要でした。

私が見つけた2番目の方法は、Apacheサーバーで実行しているPHP、MYSQLの魔女を介したものでしたが、たとえば、見つけたチュートリアルとスクリプトは機能しませんでした。必要なテーブルを作成しませんでした。

私の質問は、ページ/フラッシュファイルでオンラインの現在のユーザー数を見つける最も簡単な方法は何ですか?フラッシュ内でそれを行い、MYSQLやPHPに関与しない簡単な方法はありますか?

4

4 に答える 4

0

いいえ、外部パーツ (PHP、MySQL、Java など) を使用せずに Flash だけで実行する簡単な方法はありません。Flash はローカルで実行されるため、PHP などと対話してサーバーと対話し、ユーザーのアクティビティについてサーバーに通知し、他のユーザーのアクティビティ (オンラインのユーザー数) についてサーバーに問い合わせる必要があることに注意してください。

ユーザーをオンラインで表示するだけの場合は、投稿した例に示されている方法をお勧めします。ユーザーがアクティビティを確認したときにデータベースを更新し、x 分間アクティビティが確認されなかった場合にそのユーザーをオフラインとしてカウントします。ユーザーが何らかの方法で相互に対話する必要がない限り、これに XMLSockets を含める必要はありません。

ユーザーをオンラインで表示するだけでは不十分な場合は、ActionScript で XMLSockets を使用し、PHP Sockets を調べることをお勧めします。

于 2012-05-24T13:12:57.300 に答える
0

私はそれを機能させましたが、HTTPアドレスではなく、.swfファイルへの相対パス(myFile.phpまたはpath/myFile.phpのみ)でphpファイルをリンクするのは嫌いです。

AS3 file:

NewRequest = new URLRequest("numOnline.php");
var numberOfVisitors:int = 10;
var NewRequest:URLRequest;
var UrlLoader:URLLoader;

UrlLoader = new URLLoader();
UrlLoader.dataFormat = URLLoaderDataFormat.TEXT;
UrlLoader.addEventListener(Event.COMPLETE, onLoaded);
UrlLoader.load(NewRequest);


function onLoaded(e:Event):void {
    trace(e.target.data);
    numberOfVisitors = int(e.target.data);
}

Veriaの送信方法がまだわからないので、As3が受け取ったテキストをintに変換します

phpファイル

main PHP file (the file that as3 connects to):

<?php
include_once 'config.php'; //This file would contain the variables needed to connect to the database with $link, below
include_once 'functions.php'; //We include the functions we have created

$database = "online";

$link = mysql_connect($server, $db_user, $db_pass)or die ("Could not connect to mysql because ".mysql_error());
mysql_select_db($database)or die ("Could not select database because ".mysql_error());

usersOnline(5); //We call the usersOnline function with a time span of 5 minutes

showUsersOnline(1); //Show the number of users online, and the list of users

mysql_close($link);

?>

関数ファイルは、オンラインの訪問者数を送信しますecho $count;

于 2012-05-24T21:53:47.863 に答える
0

はい、データベース (MYSQL) と PHP がなくても実行できます。ただし、(メディア) サーバーは引き続き必要です。接続しているクライアントを数えることが「唯一の」目的である場合は、次のことはお勧めしませんが、理由があり、Flash Media Serverにアクセスできる場合は、次のことを試すことができます。

サーバー側:

  1. FMS 上にアプリケーション (フォルダー) を作成し、そのフォルダー内に main.asc ファイルを作成します。
  2. main.asc の内部。(リモート) SharedObject (サーバー側)を作成します(例: users_so)
  3. イベントでクライアントの接続を監視しますapplication.onConnect。このハンドラー内のその SharedObject に、接続している各クライアントを追加します。
  4. application.onDisconnectまた、イベントでのクライアントの切断にも注意してください。このハンドラー内の SharedObject から、切断している各クライアントを削除します。

クライアント側:

  1. アプリケーションがブラウザーに読み込まれるときに、各 Flash クライアントを FMS に接続します (URI の新しいアプリフォルダー パスを使用)。
  2. NetStatusEvent.NET_STATUSイベントと"NetConnection.Connect.Success"コードを監視します。接続時 SharedObject (クライアント側)を作成し、サーバーからリモートを取得します。
  3. SyncEvent.SYNCにイベント リスナーを追加しSharedObjectます。これは、ユーザーがサーバーに接続またはサーバーから切断したときに、各 Flash クライアントと同期します。
  4. 同期イベント ハンドラー内で、イベント応答からユーザーを取得してカウントします。
  5. Flash クライアントにカウントを表示します。

Flash Media Server 4.5 のサーバーサイド ActionScript 言語リファレンス、特にApplication Classを参照してください。また役に立つ: Flash Media Server デベロッパー センター

お役に立てれば。

于 2012-06-13T21:13:14.767 に答える
0

私はそうは思いません.Flash Playerには、サーバー上でオンラインのユーザー数を「チェック」する方法が必要です。最も簡単なのは、URLRequest(クラス名が正しいことを願っています)をサーバースクリプトに送信することです。これは、phpまたはaspx(または任意のサーバーテクノロジー)スクリプト/ページのいずれかです。

そのサーバー スクリプトは、サイトのユーザー数を返す必要があります。

例えば

var numberOfVisitors:Int = 0;

function onLoaded(e:Event):void {
    numberOfVisitors = e.target.data;

    // now print this 'numberOfVisitors' where you want to on the client
}

var numVisitors:URLLoader = new URLLoader();
numVisitors.addEventListener(Event.COMPLETE, onLoaded);
numVisitors.load(new URLRequest("num_users.php"));

次の部分は、ユーザー数を追跡する php スクリプト (またはその他のサーバー スクリプト) です。おそらく別のSOの質問として投稿する必要があると思いますか?

于 2012-05-24T13:19:35.730 に答える