间隔运行php文件

时间:2018-03-27 09:19:50

标签: php file loops intervals

我有一个仪表板,可以按设定的间隔播放视频。 它还可以从谷歌分析和谷歌分析实时获取一些数据,以便在谷歌地图上显示。 为此,它使用谷歌地图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文件)会自动更新那样呢?

2 个答案:

答案 0 :(得分:0)

这里最好的选择是将PHP包装在iframe中,然后每隔15秒重新加载一次iframe:

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

setInterval(reloadFrame, 15000);

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

答案 1 :(得分:0)

<meta http-equiv="refresh" content="15">

只需在html标题中添加

for cronjob

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