【问题标题】:cronjob help - need to update clients website "real time"cronjob 帮助 - 需要“实时”更新客户网站
【发布时间】:2012-09-18 07:42:36
【问题描述】:

我被一个项目困住了,它是一个快速修复项目,我需要一些专家的帮助。我的客户有两个独立的网站。

1. http://abc123.com/using-cron-job-update-this-folder.txt <-- I'm working on this
2. http://bw.aaaaaa.com/blah.txt                           <-- Client's 2nd site where some txt gets updated almost twice a day, on this folder blah.txt

我需要一个 php sn-p 来执行 cronjob,即从 site2 - http://bw.aaaaaa.com/blah.txt 获取文本,实时并在站点 1 上更新任何文本后立即更新 site1 - http://abc123.com/using-cron-job-update-this-folder.txt

【问题讨论】:

  • 这不是一个快速修复。定义更改和更新之间的最大延迟。是否有站点 2 http 标头可以告知上次更改的确切日期?

标签: php javascript cron crontab cron-task


【解决方案1】:

虽然这可能会导致服务器资源使用率很高并且不是很推荐,但您可以按照以下方式进行。

  1. 将从另一台服务器获取文件的服务器 - 我们将其命名为 CLIENT。
  2. 将包含要由 CLIENT 复制的新信息的服务器 - 我们将其命名为 SERVER。

在客户端上,创建一个 PHP 脚本,该脚本使用 CURL 仅下载远程文件的标题,更具体地说是修改日期。

The following answer provides a useful snippet.

存储此日期和脚本下次运行时,检查它是否已更新,然后下载完整的源代码,包括正文并按您喜欢的方式保存(例如,保存到客户端上的本地 txt 文件)。

再次在客户端上,创建一个 cronjob,它每秒或每 5 秒运行一次,或者您希望更新内容的频率。 This may come in handy for setting up the cronjob.

或者,您可以创建一个 PHP 脚本,该脚本将循环执行某些操作(下载远程文件)并休眠 1 秒,总共执行 60 秒然后停止。将此与每分钟运行的 cronjob 相结合,您将获得相同的效果,而无需每秒对 CLIENT 服务器进行 cron 调用。要查看此方法的实现,请参阅 this question 及其接受的答案。

更好的推荐替代方法是使用在客户端运行的 AJAX。让它在用户鼠标移动后立即运行,并通过您可以在服务器端公开的 API 从服务器中提取日期(例如,将返回 JSON 格式的数据,由用户浏览器中的 jQuery 等 JavaScript 库解析)。 Facebook 墙就是这样编码的。如果您只是在后台选项卡中打开墙,它不会加载任何新内容。只要您切换回它并用鼠标悬停,就会显示新帖子。

【讨论】:

  • 同样,不要忘记在短时间内执行资源密集型任务所涉及的性能损失。您确定这不能通过将在后台运行的守护进程来完成吗?
猜你喜欢
  • 1970-01-01
  • 2017-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多