第一篇文章 有点小激动 PHP 轮询方面的知识

欢迎指教
对于很多没有支持 websocket 的网站应用来说 写一些需要长轮询的应用时是一个很蛋疼的事情
例如 微信登录
微信登录需要一个长轮询去请求得到用户有没有扫描二维码
如果一直ajax 轮询请求 时间一长 浏览器就会变的很卡 可以考虑 休眠的方式来解决
下面是代码

$file_name = './test.txt';  // 此处建议使用 redis 或者其他的 缓存 尽量不使用数据库来扫描结果

for ( $i = 0; $i < 30; $i++ ) {
    $text = file_get_contents($file_name); //演示 使用文件来存储扫描结果

    if(!empty($text)){
        file_put_contents($file_name, ''); //为了更好的演示 这里每次有结果之后 将文件写为空

        exit(json_encode(['status' => 1, 'msg' => $text]));
    }

    if($i > 28){
        exit(json_encode(['status' => 0, 'msg' => '继续下一轮长轮询!']));
    }

    usleep(2000000);
}

上面的阈值自己定义 自己验证过是可以的

有什么不对的地方 欢迎指教

本文章首发在 Laravel China 社区