我目前有一个班级Status
,我在整个代码中调用它,因为我执行各种任务,例如 - 当我上传图片时,我调用$statusHandler = new Status(121)
,当我调整大小时,我致电$statusHandler = new Status(122)
。
每个statusID对应于存储在数据库中的特定文本。
类status
检索文本,并存储在$_SESSION
中。
我有另一个文件getstatus.php
,它返回当前状态。
我的想法是每隔500毫秒用ajax(通过jquery)调用getstatus.php
,然后将文本追加到网页上。
通过这种方式,用户可以(几乎)获得有关后台正在进行的计算的实时数据。
问题是我似乎只是获得了最后的状态。
我认为这只是因为事情发生得太快,所以我在调用sleep
后运行了new Status
。这延迟了页面的整个输出,这意味着PHP在完成代码运行之前不会输出任何文本。
PHP是否仅在完成所有代码的运行后才回显数据,还是逐行实时地进行数据回传?
如果是这样,任何人都可以提供任何解决方法,以便我能实现我想要的目标吗?
感谢。
答案 0 :(得分:1)
默认会话实现(平面文件)在调用session_start()时在会话文件上设置文件锁定。在会话机制关闭之前,即在脚本结束或执行session_write_close()时,不会释放此锁定。另一个想要访问同一会话的请求/线程必须等到这个锁已经释放。