php - 如何在 PHP 无限循环中更新页面变量?

标签 php session cookies infinite-loop

我有这样的东西:

<?php
  $perform_check = 1; #Checks data with ID : 1
  while(true)
  {
    #code
  }
?> 

但是这个过程中必须更新一些数据,是否可以从另一个文档更新这些数据?

我尝试过这样的事情:

index.php

<?php
  setcookie("data", 19, time()+3600);
?>

循环.php

<?php
  while(true)
  {
    if($perform_check!=$_COOKIE[data]) $perform_check = $_COOKIE[data];
    #rest of code
    flush();
    sleep(0.3);
  }
?>

但是这不起作用。我还尝试了 $_SESSION,但页面在 session_start() 上崩溃。

有可能吗?

最佳答案

Cookie 以 HTTP header 形式发送当 PHP 通过 Web 服务器(例如 Apache2)发送响应时。

所有 HTTP header 均在任何输出之前发送。如果您输出任何内容,则会在输出之前发送 header (包括 set-cookie header )。

第一次flush()后,您将无法再设置cookie或其他 header 。

如果您想要进度指示器或更新,您需要使用 JavaScript 启动您正在执行的任何操作,并定期进行轮询。在循环过程中,您需要将进度保存在共享内存、文件或数据库中(按优先顺序),然​​后使用由 javascript 进度检查/更新检查启动的过程读取该数据。

关于php - 如何在 PHP 无限循环中更新页面变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10935613/

相关文章:

带 Cookie 的 jQuery 切换

javascript - 设置 cookie 过期日期 - Javascript

php - 数据表: update table in realtime with animation

PHP 扩展 Dio 未加载?

php - 模态不在 php (CodeIgniter) 中使用 javascript 加载

python请求 session 在读取大(超过50mb)响应内容后无法读取响应

json - 将多个 cookie 传递给 puppeteer

javascript - 如何在 PHP 中包含 Javascript?

php - "close other sessions"按钮

java - Spring Boot测试RestTemplate : Pass along session id