PHP comet usleep 阻塞 apache mpm?

标签 php postgresql pdo comet

我在那里有一颗 cometd 我以这种方式运行一个 while 循环

$items = $statement->fetchAll();//statement is a PDO Statement
$iteration = 0;
while(count($items) == 0 && $iteration < 100){
    $items = $statement->fetchAll();
    usleep(10000);
    ++$iteration;
}

当 Comet 运行时,我可以看到所有其他 HTTP 请求都处于挂起状态。即使是非数据库请求也是挂起的。为什么?

最佳答案

您需要使用 PDO::commit 手动提交,因为请求被保留在事务中。

请参阅有关此行为的文档:

http://www.php.net/manual/de/pdo.commit.php

http://www.php.net/manual/en/pdo.transactions.php

关于PHP comet usleep 阻塞 apache mpm?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11126465/

相关文章:

sql - PostgreSQL 获得最小计数(*)?

php - MySQL跨表删除

php - 如何打开这个文件?

php - 将外部脚本添加到一个 Magento 页面

php - 表单提交期间在链配置的命名空间中找不到类 'Symfony\Component\Form\Form'

ruby - 如何找出复制的行数?

php - 从三个表和一个序列化列中选择数据的 SQL 查询

postgresql - jsonb 转换为文本是确定性的吗?

javascript - 创建特定格式的 JSON 数据

php - 在 Cakephp 中,如果我使用直接 mysql queires 而不是使用模型,如何防止 sql 注入(inject)?