我一直在寻找解决这个问题的方法。
我有一个面板,可以将所有内容放在给定目录中并显示出来。我希望它每10秒执行一次操作,因为现在您必须刷新整个页面。
所以当我这样做
GetLogs(); sleep(5); GetLogs();
它没有获取目录,而是显示它们,等待5秒钟,然后再次显示它们,它只是执行GetLogs();,等待5秒钟,然后再次执行,然后加载我的页面。我已经看到人们使用AJAX,但是我认为这个问题有点超出我的范围了。我读过更改apache设置或php设置可以解决此问题,但我不知道如何解决。我也查看了session_write_close和session_start,但是它们什么也没做。这些函数是从此php文件中调用的。请帮助我!
我很愚蠢,出于某种原因,我认为我可以使用服务器端语言来使客户端休眠,这很糟糕。有人可以喂我一个ajax电话吗?
答案 0 :(得分:0)
如果您只想每5秒钟刷新一次页面,则可以使用
<?php
header("Refresh: 5");
?>
必须在发送任何其他输出之前发送
答案 1 :(得分:0)
这个问题是新开发者经常问的XY problem。
PHP在服务器上运行。 Web浏览器不知道服务器上的内容。对于Web浏览器,服务器是一个黑匣子:Web浏览器向其发送文本,服务器处理服务器内容,服务器将文本发送回浏览器。通常,响应文本将以HTML形式描述网页。但是Web浏览器无法知道HTML是如何生成的:它看不到底层的PHP。
此过程有固定的顺序:
您不能真正更改此顺序。诸如ajax之类的技术通过在Web浏览器中执行其他处理并发出其他请求来解决此问题。这由JavaScript处理。例如:
这是一个相对简单的交流。实际上,许多网页会变得更加复杂。例如,服务器可能使用JSON而不是HTML进行响应。然后将由浏览器中的JavaScript来完成JSON的有用操作,例如生成HTML。
在您的特定情况下,理想情况下流程应如下所示:
<script>
标签引用JavaScript文件。<script>
标签,并从服务器请求它。setInterval
来运行一个JavaScript函数。json_encode()
编码数据,而不是输出HTML。JSON.parse()
解析JSON。这里要注意的重要一点是,Web浏览器和服务器之间没有流畅的通信隧道。 您不能从PHP调用JavaScript函数,也不能从JavaScript调用PHP函数。每次需要向另一个发送消息时,
这样想:说有两个人,爱丽丝和鲍勃。爱丽丝和鲍勃想要交换消息。他们唯一的办法就是通过蜗牛邮件。但是鲍勃没有邮票。因此,每次他们想要交换消息时,爱丽丝都要发起对话。她给鲍勃发了一封信,包括一张额外的邮票,以便鲍勃可以发送回复。鲍勃必须等待爱丽丝的来信才能发送回复。一旦他回复,就可以了-在运输过程中,他无法编辑这封信。如果他想进行更改,则必须等待爱丽丝请求更改。
在寻找问题的答案的过程中,您可能会遇到有关禁用缓冲或重复刷新页面的说明。尽管这些技术在特定情况下可能会提供理想的结果,但它们并不是真正好的解决方案。您应该研究解决眼前的实际问题:您需要找到一种方法来使Ajax在Web浏览器中使用JavaScript。