【问题标题】:PHP Cron job windows and linuxPHP Cron 作业 windows 和 linux
【发布时间】:2023-03-22 14:17:01
【问题描述】:

我需要在 windows(shared)/linux(shared)/wamp 服务器上设置 cron/automatic taks。

问题是项目在多个环境中运行。

那么设置 cron/scheduled taks 的最佳方式是什么?

实际上,我需要做的是检查电子邮件服务器是否有新电子邮件,如果发现有内容,请将其保存到本地数据库。如果您有除 cron 作业以外的其他选择,请告诉我。

谢谢。

编辑:

正如我在问题中提到的,我有多个电子邮件/过滤,所以我需要在后台运行一些东西来定期获取数据。 CRON 在 Linux 上和 Scheduled Tasks 在 Windows 上。 但真正的问题是我是在 共享主机 上进行的(或者这取决于客户端),所以我无法使用 CRON/Scheduled Tasks

例如:项目安装在 GOdaddy windows 共享主机上,它是一个 windows 服务器,因此不支持 CRON(通常)并且他们不允许使用 Scheduled Tasks

问题是:CRON/Scheduled Tasks 有什么替代方案吗? ?

【问题讨论】:

  • 您可以使用 PERL、python、php 等编写脚本,然后它可以在任何安装了该语言的平台上运行
  • @lesus 你在说什么?一切都是用 PHP 编写的。问题是我们如何设置自动化任务?
  • 任务是运行 Web 脚本还是 CLI 脚本?如果是 Web 脚本,您可以在两台服务器上安装 wget 并对您将要运行的文件执行简单的 wget。 gnuwin32.sourceforge.net/packages/wget.htm 在 linux 上它看起来像这样 wget URL/FILE.php -qO /dev/null 在 Windows 上它会像 C:\PATH\TO\wget URL/FILE.php -qO C:\TEMP 如果它是命令行你使用 C:\PATH\TO\php.exe SCRIPT.php 和 /PATH/TO/php script.php
  • 您可以通过管道将电子邮件发送到脚本,并使用它来检查电子邮件内容,无需 cron
  • 如果它在 PHP 中,我将只使用指向 php 页面的 cURL。应该可以在 Windows 或 linux 中工作

标签: php linux windows cron


【解决方案1】:

简答

我不知道 CRON/ScheduledTask 的替代品可以满足您的需求。
我建议您将计划外包给另一台服务器,请参阅下面的可能性。

我想出了以下几种可能性:

使用 CRON 作业的共享主机(最简单)

寻找可让您添加 cron 作业(例如通过网络空间管理)的共享托管服务提供商。 HostEurope(德语)就是这样的主机。

您拥有一个专用(虚拟)服务器

假设您将此项目部署到多个共享服务器,但自己拥有一个专用(虚拟)服务器:
让您的脚本公开可用,但要使用强大的授权机制来保护它。 (难以猜测的请求令牌,将某些 IP 列入白名单作为被调用者,...)。 在您自己的服务器上设置一个 cron 作业,该作业调用客户端虚拟主机上的脚本。

您没有服务器

最后一种可能,但您没有专用服务器。
在某个云提供商(例如 OpenShift)上设置虚拟机并在那里添加 cronjob。不要将此实例用于其他工作,它应该可以完美满足您的需求(参考:https://openshift.redhat.com/community/blogs/getting-started-with-cron-jobs-on-openshift

要求不符合基础架构(可能!)

您的客户/项目的要求不适合共享托管环境。强烈建议您获得满足您真正需求的托管计划。共享主机与第一台虚拟服务器或专用主机之间的价格差异并没有太大,以至于调查是不可能的。

【讨论】:

    【解决方案2】:

    正如其他人所建议的,如果这是一个网页,您可以使用 wget 来运行它。 如果它是 CLI 脚本,则必须使用 php /directory/filepath.php 运行它 如果实际问题是您将如何定期运行它,您将不得不使用 *NIX 上的 cron 和 windows 服务器上的计划任务。 如果要自动安装 cron,则必须检查操作系统并根据操作系统是 windows 还是 *NIX 采取行动。 谷歌搜索将为您提供有关如何在两种环境中执行此操作的结果。

    在红色澄清后编辑 正如 Samuel Herzog 所说,在共享主机上,您(通常)有一个控制面板。 最著名的 linux 有:

    控制台:http://www.siteground.com/tutorials/cpanel/cron_jobs.htm

    Plesk:http://www.hosting.com/support/plesk/crontab

    网民:Setting up a cron job with Webmin

    对于 windows,我只对 plesk 有一些了解,其过程与以前相同。

    如果您没有控制面板但有 shell 访问权限 (linux),您可以按照 this 教程进行操作。

    如果您没有控制面板但有远程桌面(Windows),您可以按照this 教程。

    如果您没有上述任何一项,您应该遵循 Samuel Herzog 关于云提供商上的虚拟机的建议,或者考虑升级到 VPS 或专用服务器。

    【讨论】:

    • 问题不是how to run that script,而是how to setup something that which periodically run that script
    • 用一些建议(特定于控制面板)更新了答案,但对 Samuel Herzog 的答案 +1 :)
    猜你喜欢
    • 2012-03-21
    • 1970-01-01
    • 2016-04-05
    • 1970-01-01
    • 2012-04-11
    • 2023-03-29
    • 1970-01-01
    • 2011-02-12
    • 2018-11-18
    相关资源
    最近更新 更多