0

我正在开发需要在特定时间执行一个代码的网站。

哪个是编写 Cron Job 或使用 JavaScript Timing Event 或类似的东西或 JavaScript 更快更好的选择

4

4 回答 4

4

你在问一个关于两个完全不同的事情的问题。

Cron 作业基于服务器,JavaScript(除非您使用 NodeJS)基于客户端。取决于这是否是一项任务:

  • 必须执行并且不能依赖于客户端(例如,数据是敏感的),或者
  • 可以依赖于客户端执行(这意味着浏览器窗口应该保持打开状态并且应该启用 JavaScript),

分别选择 Cron (1) 或 JavaScript (2)。

这真的就像苹果和橘子之间的比较。除非您告诉我们您想要橙汁还是苹果派,否则我们将无法为您提供更多帮助。请记住,Cron 是为了更可靠的服务器端任务执行,而 JavaScript 超时是每个用户(或者更确切地说是每个客户端),不太可靠的执行。

于 2012-09-14T23:44:03.763 回答
2

这完全取决于您需要在特定时间执行的代码的性质。

如果这是每天下午 2 点或其他时间必须发生的事情,无论是否有人在查看该网站,那么您应该为此使用 cron 作业。

另一方面,如果它需要在每个用户的特定时间执行(即,在一定的空闲时间后自动将用户从页面注销),那么适当的调用是 Javascript 计时函数。

Javascript 计时功能仅在有人实际查看页面时才有效,然后它将为多个用户多次调用,这可能会或可能不会根据您的情况而定。

当然,您可能正在服务器上运行Node.js,在这种情况下,您可以像使用 cron 作业一样使用 Javascript 计时函数。

于 2012-09-14T23:46:23.820 回答
1

简而言之,使用 cron

在您对另一个答案的评论中,您说:

我想每周执行一次 php 函数

在这种情况下,您有一个主要选项(假设您使用 *nix),那就是 cron(我不知道 Windows 的替代方案是什么)。Cron 是专门为此功能设计的,无论您是否选择使用它,它很可能无论如何都在您的服务器上运行(对于其他系统功能),因此速度不是问题。

不要使用 Node.js

Node.js 是PHP的替代服务器端技术。您将在服务器端使用它而不是php。如果您已经在使用 PHP,那就忘记它。提到 Node.js 的唯一原因是您询问过 JavaScript。

此外,对于每周一次的计时事件,JavaScript 计时器也不是一个好主意。setTimeout() 函数以毫秒为单位工作,适用于在几秒和几分钟(可能是几小时)内工作,但不是几周。

如果您要使用服务器端 JavaScript(如 Node.js),您可能需要执行类似于下面的 PHP 替代方案的操作。

PHP 替代方案

当然,根据您的托管环境(尤其是便宜的),cron 可能不可用。在这种情况下,您将不得不提出不同的策略,并且您可能最好使用 PHP。我以前见过的一些事情是这样的:

  1. 有一些需要执行的工作的登记册。(在数据库、文件或其他任何地方)
  2. 每次你运行你的主 PHP 脚本(通常是 index.php),检查寄存器看看是否有任何未完成的工作。2.a. 运行作业。2.b。更新寄存器,以便您记住上次执行作业的时间。

优点:

  1. 如果您无权访问 cron,它可以工作。

缺点:

  1. 如果您的脚本不经常运行(因为此方法依赖于访问您页面的人),您的作业可能不会像您希望的那样经常运行。
  2. 如果您的脚本经常运行,您将在脚本中遭受不必要的开销。
  3. 如果您的作业需要很长时间才能运行,它将影响页面加载时间。
  4. 您基本上是在复制 cron,但使用 PHP 的效率远低于使用 cron。
  5. 您不太可能(除非您投入大量时间)开发出与 cron 一样好的解决方案。
于 2012-09-15T01:43:57.000 回答
0

要运行 javascript 计时事件,您需要打开网页。这意味着您必须公开该页面。你不想那样做。Cron 作业既简单又有效。我喜欢他们。你应该这样做。

于 2012-09-14T23:43:37.800 回答