ZF2 没有在特定时间自动运行脚本的“cron 作业”服务。
Cron 作业是在特定时间执行的任务,通常在操作系统级别设置。在 unix 中,它是通过 crontab 完成的,在 windows 中,您可以使用任务调度程序。ZF2 中没有任何内容可以在 12:00 和 12:10 运行您的脚本。
选项 #1:通过管理面板进行 Cron 作业
对于大多数托管环境,您可以通过网站托管管理面板(例如 Plesk 或 cPanel)设置“cron 作业”。在那里,您可以通过输入时间和要运行的命令来安排作业。当您以这种方式创建 cron 作业时,请记住您将输入要通过命令行运行的命令。通常这是直接调用 php 来执行特定的脚本,但您也可以使用wget从 Internet 获取任何 URL。如果您直接调用 php,则需要根据 Zdenek 的回答设置控制台路由。
/usr/bin/php /path/to/zf2/public/index.php myIndexConsoleRoute
或者
wget http://yoursite.com/fetch-from-source/index
选项 #2:通过命令行设置 Crontab
或者,如果您具有对服务器的命令行访问权限和适当的用户权限,则可以根据 Zdenek 的回答通过命令行设置 crontab。这里也有相关信息。这通常是首选方法,但在我看来,它涉及更多,并且可能是设置和调试的挑战,特别是如果您没有使用 Unix 的经验。
选项#3:Cron Job 服务
如果您正在寻找更简单的解决方案,您可能会考虑使用其中一个 cron 服务,它会在给定时间加载特定的 URL。
例如,我过去使用过此服务:
https ://www.setcronjob.com
创建帐户后,您只需输入一个 URL 并选择您希望调用该 URL 的时间。通过设置两个作业,一个在 12:00 运行,另一个在 12:10 运行,您可以轻松地完成在 12:00 调用 indexAction 和在 12:10 调用 icalAction 的要求。SetCronjob 有一个免费计划,可能适合您的需求,但请注意,他们要求您每 30 天输入一次验证码以更新您的免费帐户(这很好,但一段时间后会变得烦人)。
URL 与命令行
使用选项#1 中的“wget”和选项#3 中的 Cron 服务,您需要通过 http 使您的 indexAction 和 icalAction 可用。这可能是一个重要的考虑因素。即使您添加了某种验证(通过检查您通过查询字符串或帖子发送的代码),如果互联网上的任何人知道正确的“秘密”URL,他们仍然有可能触发这些功能。通过 http 访问 ical 和 index 方法的另一个好处是,如果您想手动运行这些脚本来强制更新,您可以轻松调用它们。
使用 Zdenek 提到的 CLI 方法,您可以在 ZF2 中创建控制台路由,触发该路由的唯一方法是通过命令行。这通常是首选,因为您的 index 和 ical 方法不会暴露给 http,但它并不总是一个选项,具体取决于您的托管设置,并且根据这些功能对您的数据和公共网站的作用,它可能不是一个重要的问题.