我正在使用浏览器中的 GeoLocation,效果很好,我正在寻找一种方法来每 10 分钟更新一次浏览器的位置。我不能使用 Cron Job,有没有办法可以在 PHP 中指定一个 while 循环,在用户打开浏览器时每 10 分钟发生一次?
3 回答
你不想用 PHP 来做这件事,如果这甚至可能只用 php。
您可以使用无限循环和 10 分钟的睡眠,但同样,这不是方法。这不是 php 的用途,它的服务器端。除此之外,php 不能“撤消”以前发送的信息。你会遇到各种各样的问题。如果更新脚本呢?所有当前用户都不会看到新页面,因为他们的版本已加载到服务器的内存中。并且比最大执行时间...
您正在寻找一个 javascript 超时 10 分钟的 AJAX 解决方案。因为 javascript 是客户端,所以它更容易告诉服务器“好的,我现在准备好接受新信息了”
如果您正在寻找更全局的解决方案,您可以在数据库中创建一行,创建一个名为“timed_scripts”的表,其中包含 3 列id, time2execute, script2call
。然后让用户触发一个检查所有 time2execute 值的函数,看看是否有任何小于当前时间,如果你,回调脚本并将时间更新为 time()+10min
我想到的最好的方法是创建一个 PHP 脚本来检查并设置一个 javascript 或 HTML5 回调来调用该 PHP 脚本。如果需要更新,请重新加载浏览器,如果不继续。
如果地理定位代码在 JS 中,则 setTtimeout(),如果逻辑在 PHP 中,则使用 SetTimeout 每 10 分钟向该逻辑页面发送 ajax 请求。