禁用并发闪存视频流


Disable concurrent flash video streaming

我很确定我知道这个问题的答案,但出于好奇和尽最大努力,我不得不把这个问题公布出来。我有一个以订阅模式工作的网站。我知道一些用户正在与许多其他用户共享他们的帐户。为了阻止这种情况,我使用PHP在第二个用户登录后将第一个用户注销,以防止多个用户同时使用一个帐户。问题是,网站上有很长的Flash视频,因此用户可以登录并开始观看视频,并且在视频播放开始后,第二个用户可以登录并观看,依此类推。如果第二个使用者登录了同一个帐户,是否可以停止流式传输给第一个使用者?如果是,如何?

感谢您的真知灼见,

奥维尔

我会尝试通过web服务器的特殊配置来实现这种方法,这样每个页面请求都是分叉的。Apache有MPM预处理模块,它就是这样工作的。

在每个PHP请求开始时,您将保存当前进程的PID。

     $pid = getmypid();

然后将其保存到数据库中,以用户名作为当前进程进行行。如果已经存储了另一个PID,请使用

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

我假设您的服务器一直在同一个用户下运行,所以它有权终止另一个进程。

现在开始流式传输数据,从开始到结束。

     readfile($path);

完成后,将当前用户PID设置为NULL并完成。

它将在启动时分配比线程服务器更多的资源。但我认为,当流式传输视频文件时,你每流一秒就可以节省更多的资源,一开始的一些分叉并不重要。重要的是视频流启动后的平稳快速发送,对吧?

我没有尝试。当你开始从外部杀死apache自己的进程时,他可能会不高兴。我相信大多数用户一次只看一部电影,杀戮过程应该足够罕见。请随意尝试:)