cron job vs javascript计时事件

时间:2012-09-14 23:40:49

标签: php javascript javascript-events cron

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

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

4 个答案:

答案 0 :(得分:4)

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

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

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

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

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

答案 1 :(得分:2)

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

如果它必须每天下午2点或其他任何事情发生,无论是否有人在看网站,那么你应该使用cron工作。

另一方面,如果它需要在某个时间执行每个用户(即,在一段空闲时间之后自动将用户登出页面),然后适当的调用是Javascript计时功能。

Javascript计时功能仅在某人实际查看该页面时才有效,然后为多个用户多次调用,根据您的具体情况,这可能是也可能不是。

当然,您可能在服务器上运行Node.js,在这种情况下,您可以使用Javascript计时功能,就像它们是一个cron作业一样。

答案 2 :(得分: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.更新注册表,以便记住上次执行作业的时间。
  3. 优点:

    1. 如果您无法访问cron,则可以使用。
    2. 缺点:

      1. 如果您的脚本不经常运行(因为此方法依赖于访问您网页的人),您的作业可能无法按照您的喜好随时运行。
      2. 如果您的脚本 非常频繁地运行,您的脚本将遭受不必要的开销。
      3. 如果您的作业需要很长时间才能运行,则会影响页面加载时间。
      4. 你基本上是在复制cron,但使用PHP的效率远远低于使用cron。
      5. 除非你投入大量时间,否则你不太可能开发出与cron一样好的解决方案。

答案 3 :(得分:0)

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