php - 如何在 PHP 中安排电子邮件活动?
问题描述
我正在开发一个在 php 中发送电子邮件活动的平台。我只是一个问题,我如何设置 php 邮件发件人功能在用户定义的一个小时内工作。我正在考虑使用 Cron 作业,但这似乎很难编写一个发送 url 请求的 Cron 作业(因为我需要电子邮件参数,所以我不能只执行 php 脚本)。我希望你能帮助我找到解决这个问题的方法。谢谢您的回答 !
解决方案
- 做你的作业。你应该研究 cron 和 PHP
https://www.a2hosting.com/kb/developer-corner/php/run-php-scripts-from-cron-jobs
https://packagist.org/packages/peppeocchi/php-cron-scheduler
您必须将计划保存在数据库中,以便您可以编辑、删除和重新计划,以防您的 cron 表丢失。
由于 PHP 在服务器运行后退出,您可以使用系统的 cron 表在预定时间运行您的 Sender 脚本。为此,您有 2 个选项:
选项1
如果您的服务器在 localhost :9091 上运行
将数据库中的计划 ID 保存在 cron 作业中,以便您的 Sender 脚本可以从数据库中获取设置以发送电子邮件。
# replace * * * * * with the schedule from the user
* * * * * curl localhost:9091/sendEmail?id=123
也可以直接放信息,但是如果不保存在数据库会丢失cron表会丢失日程,所以还是保存比较好。
# replace * * * * * with the schedule from the user
* * * * * curl localhost:9091/sendEmail?addr=name@email.com&subscription=pets,house,food
选项 2
如果您不希望有很多用户/计划,您可以在每次用户请求时创建 cron 作业,然后调用您的 Sender 脚本,该脚本将从数据库(SELECT 查询)中获取所有计划并发送给它发电子邮件。
# Every hour for example
0 * * * * php path/to/script.php
推荐阅读
- chisel - 如何在凿子中将 Seq bool 转换为 UInt 值?
- mysql - 当我将多个变量放在 SELECT 部分时,GROUP BY 部分不起作用
- python - 计算两个排序数组的中位数时将浮点数转换为整数的问题
- reactjs - 在 React 中用 typescript 替换 vanilla js
- cas - CAS 重定向过多和 500 内部服务器错误
- spring-batch - 重新启动时如何从 RDBMS 批处理元数据表加载步骤执行上下文?
- office-online-server - 如何在世界办公室在线填写动态占位符
- flutter - Flutter单选按钮文本“kg”对齐问题?
- aws-lambda - 使用 Serverless.yml 通过环境变量传递 StateMachine ARN
- android - BuildConfig 在 KMM 项目中定义多次