0

私はこの質問に対する答えを知っていると確信していますが、好奇心から、そして最善の努力をするために、これを公表しなければなりません。サブスクリプション モデルで動作するサイトがあります。一部のユーザーが自分のアカウントを他の多くのユーザーと共有していることを知っています。それを思いとどまらせるために、私は PHP を使用して、2 番目のユーザーがログインした後に最初のユーザーをログアウトすることで、複数のユーザーが同時にアカウントを使用するのを防ぎました。問題は、サイトに長い Flash ビデオがあることです。ユーザーはログインしてビデオの視聴を開始でき、ビデオの再生が開始された後、別のユーザーがログインして視聴することができます。2 番目のユーザーが同じアカウントにログインしている場合、最初のユーザーへのストリーミングを停止することはできますか? もしそうなら、どのように?

洞察をありがとう、

オービル

4

1 に答える 1

0

各ページリクエストがフォークされるように、Webサーバーの特別な構成によるアプローチを試みます。Apache には MPM prefork モジュールがあり、そのように動作します。

各 PHP リクエストの開始時に、現在のプロセスの PID を保存します。

     $pid = getmypid();

次に、データベースに保存して、ユーザー名を現在のプロセスとして行に保存します。別の PID が既に保存されている場合は、使用します。

    system('kill -TERM '.$pid);

サーバーは常に同じユーザーの下で実行されていると想定しているため、別のプロセスを強制終了する権利があります。

ここで、最初から最後までデータのストリーミングを開始します。

     readfile($path);

終了したら、現在のユーザーの PID を NULL に設定して終了します。

スレッド化されたサーバーよりも、起動時に多くのリソースを割り当てます。しかし、ビデオ ファイルをストリーミングする場合、ストリーミングするたびに節約できるリソースが増えるため、最初のフォークは問題ではないと思います。重要なのは、開始後のビデオ ストリームのスムーズで高速な送信ですよね?

私はそれを試しませんでした。外部から自分のプロセスを強制終了し始めると、apache が満足しない可能性があります。ほとんどのユーザーは一度に 1 本の映画しか見ないと思いますが、強制終了プロセスはほとんどないはずです。お気軽にお試しください :)

于 2012-07-31T18:20:48.377 に答える