2

在对这个问题进行了一些研究之后,我找不到任何令人满意的解决方法。

问题是:我正在以编程方式执行 GET 请求。请求本身可以正常工作,并且请求的页面也可以。在请求的页面中执行任何其他操作之前,我需要检查有效登录,因此我发送了会话 cookie 以接收会话的 ID,这也可以正常工作。但是一旦我调用 *session_start( )*,请求就会超过 60 秒的执行时间限制。不过,直接访问请求的页面可以正常工作。

这可能是一个重要的评论:请求页面也使用 Sessions 进行相同的检查。

我希望请求的页面是“远程”/“独立”/但是您想调用它的原因是我也希望通过 AJAX 访问它。我想简单地包含文件并检查文件是否被直接调用也可以,但是我现在已经这样做了,并且对它几乎感到满意。

我现在的问题是:谁能告诉我为什么 session_start 宁愿让我的脚本崩溃?有人知道这个补丁吗?

4

1 回答 1

2

会话在 PHP 中是阻塞的,这意味着如果您在使用相同会话的同一主机上运行两个请求,其中一个将被阻塞(等待),直到第一个完成。

在您的情况下,如果您的编程 GET 请求使用客户端的会话 ID,则可能是两个脚本相互阻塞 - 因为一个正在调用另一个,“子”脚本将无限期等待。

在不了解您的项目的情况下很难提出解决方案,但在我看来,使用客户端的会话 ID 发出程序化 GET 请求是不正确的。也许你可以改变这种行为。

于 2011-08-15T15:47:16.367 回答