gpt4 book ai didi

php - cakephp comet usleep 阻止一切

转载 作者:可可西里 更新时间:2023-11-01 07:04:34 25 4
gpt4 key购买 nike

下面是我使用成功的 Comet 实现最终得到的代码。

$lastmodif = isset($this->params['form']['timestamp']) ? $this->params['form']['timestamp'] : 0;
$currentmodif = $already_updated[0]['Update']['lastmodified'];

while ($currentmodif <= $lastmodif)
{
usleep(5000000);
clearstatcache();
$already_updated_new = $this->Update->find('all',array
(
'conditions' => array
(
'Update.receiver_id' => $this->Auth->user('id'),
'Update.table_name' => "request_responses"
)
));
$currentmodif = $already_updated_new[0]['Update']['lastmodified'];
}

$already_updated[0]['Update']['lastmodified']是get last updated timestamp of table的查询结果。

在上面的代码中,$lastmodif 和 $currentmodif 是在每次成功的 cometd 响应后传递的时间戳。

但现在的问题是,当我点击同一页面上的其他链接时,什么也没有发生,但是在等待了很长时间之后它被重定向了。

我认为 usleep 正在阻止其他 <strong>HTTP</strong>请求。

我正在使用 mysql 和 cakephp,请大家指导我如何解决这个问题。

我尝试在调用页面时刷新,但它显示无法修改 header 错误,因为输出已发送。

谢谢。

最佳答案

我遇到过好几次类似的情况。看起来 Session 被你的 sleep 脚本阻止了。

如何在 CakePHP 中解决:
在脚本开头调用 session_write_close();
无法通过 Cake 的 Session 组件或 Helper
注意:如果脚本中的某些内容使用 session - Cake 将重新打开 session 并再次挂起所有使用相同 session 的请求。在这种情况下,您需要在 sleep 前或任何需要很长时间才能完成的操作之前关闭 session

关于php - cakephp comet usleep 阻止一切,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13933674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com