【问题标题】:Running scripts on the server every 3 hour每 3 小时在服务器上运行一次脚本
【发布时间】:2017-03-25 20:55:14
【问题描述】:

以下是我正在做的伪代码

Javascript

1) 发出XMLHttpRequest GET 请求从服务器获取数据

2) 解析收到的响应并制作所需格式的字符串

3) 发出XMLHttpRequest POST 请求将这个新字符串发送到 PHP 脚本

PHP

4) 解析这个接收到的字符串

5) 将此字符串发送到 mqtt 代理

目前,我的 Javascript 代码写在 HTML 文件中,我在网页中运行整个过程。为了连续运行,我必须一直在浏览器中打开这个网页(我根本无法关闭我的电脑)。但我不想让我的系统一直保持正常运行。所以我正在考虑使用crontab 在服务器上运行整个过程。但这些是我遇到的以下问题。

1) 为了在服务器上运行我的 JS,我使用了 NodeJS 来运行它。但是 NodeJS 有自己的 XMLHttpRequest 替代方案,我尝试过,但甚至无法让它完成我的第一步。

我的疑问是,即使我让 NodeJS 成功地做 http 请求,NodeJS 是否可以运行我的整个过程,因为它也涉及 PHP?

2) 我想将我的整个 JS 代码更改为 PHP 代码,因为 crontab 可以运行 PHP 脚本。

我的疑问是,我可以像在 JS 中一样在 PHP 中执行 XMLHttpRequest 吗?

【问题讨论】:

  • 为什么需要 JavaScript?
  • 为什么选择javascript?您可以使用 php 和 cronjobs 来完成。在 php 中查看 curl。
  • 您是否在自己的服务器上获取和发布?
  • Javascript 是我在需要运行此程序时找到的快速解决方案。
  • @apokryfos - 是的,我现在使用的一切都是我自己的。

标签: javascript php ajax node.js crontab


【解决方案1】:

要使用选项 1),您可以使用 https://www.npmjs.com/package/xhr2 包,它在 node.js API 之上实现了 W3C XMLHttpRequest 规范。

Crontab 还可以运行任何脚本,因此您也可以使用 crontab 触发 node.js 脚本。

【讨论】:

  • 所以,我应该使用你提到的那个来实现我的XMLHttpRequest,然后可以像这样在 crontab 上运行这个 JS 文件 - 30 * * * * /path/to/my .js 文件?
  • 是的,使用30 * * * * /usr/local/bin/node /path/to/script.js
【解决方案2】:

您可以 cron PhantomJS 每小时加载您的网页。

【讨论】:

  • 我在 JS 中使用 setInterval 每 30 分钟运行一次整个过程。我的问题是,使用它,我不得不一直在浏览器中打开网页,因此我无法随时关闭系统。
  • 您可以使用 PhantomJS 加载您的网页然后退出。然后你可以 crontab 来安排每 30 分钟运行一次 PhantomJS。从架构上讲,您的方法是有缺陷的。但是 PhantomJS 是加载和 HTML 页面并在其上执行任何 JavaScript 的方式,而无需打开浏览器窗口,如果这是您想要做的。
  • 你能告诉我我需要做些什么来改善我的缺陷吗? JS 和 HTML 页面是一个快速修复,这就是我现在尝试改进的原因
  • 你没有缺陷 ;-) 但听起来你正在使用许多不同的东西。您可能应该只使用 PHP。但是,嘿,如果它有效并且你正在学习,没关系
  • 我知道我使用了很多东西。我必须在 5 天内完成它,所以当我运行它时并没有想太多(是的,我按照我的意愿工作:P)但现在我想纠正它..
猜你喜欢
  • 1970-01-01
  • 2011-02-05
  • 2014-10-18
  • 1970-01-01
  • 2016-07-14
  • 1970-01-01
  • 1970-01-01
  • 2019-11-17
  • 1970-01-01
相关资源
最近更新 更多