防止长时间轮询脚本在没有会话的情况下多次执行

时间:2019-05-14 19:16:02

标签: php

所以我在我的网站上进行了长时间的民意测验(目前,我无法选择实施WebSockets),并且我一直在关注与 MySQL 。目前这个价格很低,因为我每有机会就关闭PDO连接,但是这让我开始思考: 如果客户决定不断访问长轮询脚本怎么办?那么它将不必要地开始对该用户进行多次轮询;快速占用可用线程的数量。

我无法在前端控制它,因为可以操纵。在服务器端。

在服务器端工作的问题是,在运行长轮询时不能使用Sessions,否则它将完全挂起所有服务器请求(我认为这与while循环有关-我不太记得了) 。所以像这样处理它是行不通的:

/* don't hang server requests, essentially... */
session_write_close();

if(Session::get("is_polling") !== true){
    /* ... begin long poll here ... */
    Session::set("is_polling", true);

    if(/* long poll finished */){
        Session::set("is_polling", false);
    }  
}

我全都没主意,因为我的大多数解决方案都涉及Sessions JavaScript 的使用,如上所述,这是不允许的(我什么都不想要)在用户的控制之下)。

感谢所有帮助,
干杯。

0 个答案:

没有答案