计划任务模式
从根本上说,计划任务由三部分组成:任务本身、通过定义任务运行时间和允许运行时间进行调度的作业,以及执行该作业的作业注册表。
通常,这些都是通过在 Linux 服务器上使用 cron 来实现的。您可以使用以下配置语法在配置文件中添加一行:

通常,您可以通过在命令行中运行 crontab -e
来编辑 cron
文件。您可以使用此模式安排任何 Linux 命令。这是一个将在每天 20:00(晚上 8 点)运行 PHP 脚本的 cronjob:
0 20 * * * /usr/bin/php /opt/test.php
这些运行程序的实现非常简单,但这里有一些指导原则,可以帮助你在创建它们时进行指导:
-
不要将 cronjobs 暴露在互联网上。
-
运行任务时,任务不应检查是否需要运行的标准。该测试应在任务之外进行。
-
任务只应执行其预定的活动,而不应执行任何其他目的。
-
小心我们在第 7 章 "重构" 中讨论过的 "数据库即 IPC" 模式。
你可以在任务中加入任何你想要的内容(在合理范围内)。你可能会发现异步执行是最好的方法。Icicle 是执行异步行为的优秀 PHP 库。您可以在 https://icicle.io/ 上找到相关文档。
如果我们的任务需要按特定顺序完成多个任务,可以使用我们在结构设计模式部分讨论过的复合设计模式,并调用使用该模式的单个任务来调用使用该模式的其他任务。
总结
在本章中,我们介绍了一些识别对象间常见通信模式的模式。
我们介绍了如何使用观察者模式来更新观察者对给定对象状态的了解。此外,我们还了解了标准 PHP 库中包含的功能是如何帮助我们实现这一点的。
接着,我们介绍了如何使用 PHP 核心中的各种接口和生成器函数,以多种不同的方式在 PHP 中实现迭代器。
我们接着讨论了模板模式如何定义算法骨架,我们可以用比标准多态性更严格的方式动态调整该骨架。我们讨论了 "责任链" 模式,它允许我们将一个链中的对象连接起来,以执行各种功能。策略模式教我们如何在运行时改变代码的行为。然后,我介绍了规范模式的基础知识以及其中的高级功能。最后,我们修订了计划任务模式,以及如何在 Linux 上使用 cron 实现该模式。
这些设计模式对于开发人员来说是最重要的。在许多项目中,对象之间的通信至关重要,而这些模式可以真正帮助我们实现这种通信。
在下一章中,我们将介绍架构模式,以及这些模式如何帮助你完成软件架构任务,如何帮助你应对可能面临的更广泛的软件工程挑战(尽管从技术上讲,这些模式本身可能并不属于设计模式)。