PHP7.0 中的协程与协议设计
1. 后台进程
PHP CLI 提供并行处理进入的请求的能力,但是这并非适用于大型应用程序,因为 CLI 在每个请求之间都会保持一个裸的发展环境。当处理大量并发请求时,进程管理会成为一个问题,因为每个进程都需要大量的内存,而进程间的通信会消耗不必要的资源。 下面就是后台进程编写一个插件,监控与分配请求。此插件应该如何编写?
首先,我们来看看 PHP CLI 主事件循环。当解析到一个 HTTP 请求,并创建一个相关的「Request」对象后,会调用 PHPCLI 的「tick」方法,进而触发 PHP 的脚本文件。在此之后,脚本需要对请求进行响应。
当此脚本完成时,必须在 CLI 中返回以便继续下一个(并发)请求。因此,我们需要对脚本的执行时间进行限制,否则会影响后续的请求调度。
2. 后台进程计划任务
任务计划是一项非常重要的功能,可以在预定时间或根据特定的触发器(例如,消费队列)中调用一个 API 以执行特定任务。如果您使用的是 CronJob,则可能需要在每个计划的任务之间添加休眠时间。如果您使用的是消息传递系统(例如,RabbitMQ),则应该仔细选择如何处理队列的消耗。
因此,我们可以固定消耗队列或随机抛出一个「休眠时间」来控制定时任务。
3. 协议
从 P3P 到 SAML,协议总是 Web 开发中的一个重要主题。如今,您可以使用 JSON Web Tokens(JWT)或 OAuth2 轻松保护您的应用程序和 API。由于在网上处理敏感任务时安全性至关重要,所以你必须掌握至少一种协议及其实现方式。
4. 协议的实现
JSON Web Tokens(JWT)和 OAuth2 是 Web 应用程序和 API 开发的两种最常见的协议,JavaScript 开发人员可能还熟悉像 OpenID Connect 之类的标准。无论你使用哪种协议实现,你应该遵循最佳实践,并遵循严格的安全规则。
常用的使用范例包括:
- 使用 JWT 验证 API 请求
- 实现 OAuth2 认证流程
- 采用 OpenID Connect 保护你的应用程序
- 为某些用户定义自定义权限
#### 总结
PHP7.0 中的协议设计比较成熟,开发人员应该熟练掌握有关协议的实现方式,以确保其应用程序和 API 的安全性。对于大规模应用程序,后台进程也是必不可少的。