微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

cakephp彗星usleep阻止一切

下面是我最终使用成功的彗星实现的代码.

$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’]是获取表的最后更新时间戳的查询结果.

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

但现在的问题是,当我点击同一页面上的其他链接时,没有任何反应,但在等待这么长时间后重定向.

我认为usleep阻止了其他HTTP请求.

我正在使用MysqL和cakePHP请大家指导我该怎么办才能解决这个问题.

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

谢谢.

解决方法:

我几次遇到过类似的情况.看起来Session被您的睡眠脚本阻止了.

如何在CakePHP解决它:
调用session_write_close();在脚本的开头.
没有办法通过Cake的Session Component或Helper来做到这一点
注意:如果脚本中的某些内容使用了session – Cake将重新打开会话并挂起所有再次使用相同会话的请求.在这种情况下,您需要在睡眠前或任何需要花费大量时间才能完成的操作之前关闭会话

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐