【问题标题】:run php file on interval间隔运行php文件
【发布时间】:2018-03-27 09:19:50
【问题描述】:

我有一个仪表板,它按设定的时间间隔播放视频。 它还从谷歌分析和谷歌分析实时获取一些数据,以在谷歌地图上显示这些数据。 为此,它使用谷歌地图 javascript api 和谷歌分析报告 php api。 该视频位于一个单独的 js 文件中。 地图(和实时数据)位于单独的 php 文件中。 分析数据也在一个单独的 php 文件中。

现在,我遇到的问题是,目前我只是使用 ?php include)('filename.php'); ?> 将它们包含在 index.php 中。 哪个有效,它输出我想要的数据和地图和视频。

但现在我想每 15 秒更新一次此信息。 我尝试了一些while{ do something; sleep()},但这会产生错误,因为它会重新声明以前的函数,例如analytics()

我也尝试了一些 JavaScript setInterval() 并以这种方式包含文件,但这也不起作用。由于所有功能都在这些文件中,我将如何完成它以每 15 秒更新一次?

我也尝试了一些 GET 请求,但我不只是想要信息,因为所有功能(例如地图和图表)都在这些文件中,所以简单的数据返回也不起作用。

所以我想要的是:每 15 秒重新加载(就像刷新页面时一样).php 文件。 我不想真正刷新页面,因为这也会重置 JavaScript 视频脚本,这是我不想要的。

我已经阅读了一些关于cronjob 的内容,是否可以以这种方式以设定的时间间隔运行 .php 文件,并且index.php(包括其他 .php 文件)也会以这种方式自动更新?

【问题讨论】:

  • 您正在寻找一种称为 AJAX(异步 JavaScript 和 XML)的技术。使用 AJAX,您可以异步(在后台)从服务器发送和检索数据,而不会干扰现有页面的显示和行为。
  • 现在要做的工作太多,因为这需要快速完成,但我肯定会阅读此内容,当我觉得舒服时更新它以改用 AJAX。谢谢。

标签: php file loops intervals


【解决方案1】:

您最好的选择是将 PHP 包装在 iframe 中,然后每 15 秒重新加载该 iframe,如下所示:

const reloadFrame = () =>
   document.getElementById('some_frame_id').contentWindow.location.reload();

setInterval(reloadFrame, 15000);

您遇到的问题是 PHP 渲染都是在服务器端处理的,因此只需向服务器抛出 GET 请求就会返回整个渲染页面。除非我当然误解了这个问题,并且您的 filename.php 文件将只返回数据以更新地图,在这种情况下,只需编写函数来更新地图并使用 setTimeout 递归调用它。

【讨论】:

  • 确实是一个非常简单的解决方案,但它确实有效,这就是我所关心的。谢谢。
【解决方案2】:
<meta http-equiv="refresh" content="15">

只需在 html header 中添加这个

用于定时任务

# crontab -e
00 15 * * * /usr/local/bin/php /home/john/myscript.php

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-20
    • 2011-12-21
    • 2020-04-01
    • 1970-01-01
    • 2019-01-07
    • 2014-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多