0

我很确定我知道这个问题的答案,但是出于好奇和为了尽最大努力,我必须把它放在那里。我有一个适用于订阅模式的网站。我知道有些用户正在与许多其他人共享他们的帐户。为了阻止这种情况,我使用 PHP 来防止多个用户同时使用一个帐户,方法是在第二个用户登录后注销第一个用户。问题是网站上有很长的 Flash 视频,所以用户可以登录并开始观看视频,并且在视频播放开始后,第二个用户可以登录并观看等等。如果第二个用户登录了同一个帐户,是否可以停止向第一个用户流式传输?如果是这样,怎么做?

感谢您的任何见解,

奥维尔

4

1 回答 1

0

我会尝试通过 Web 服务器的特殊配置来实现,因此每个页面请求都是分叉的。Apache 有 MPM prefork 模块,就是这样工作的。

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

     $pid = getmypid();

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

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

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

现在开始流式传输数据,从头到尾。

     readfile($path);

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

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

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

于 2012-07-31T18:20:48.377 回答