首页 文章

在这种情况下应该使用什么?

提问于
浏览
0

Here is the 'use case':

管理员转到newsletter.php,填写电子邮件表单,即主题,向其发送电子邮件的用户组,写入邮件并单击“发送”按钮 .

Problem:

每小时发送的电子邮件数量应限制为400,也就是说,应该发送一封电子邮件 . 每10秒钟 . 此外,应跟踪已发送和未发送的电子邮件 .

Question:

  • cron的工作会起作用吗?

  • 代码是用Yii框架编写的 . 当用户单击"Send"按钮或仅在命令行中时,是否可以激活cron作业?

  • 如果cron作业可以执行上述操作,是否只能在特定控制器的特定操作中激活?或者它会影响整个脚本?

谢谢

6 回答

  • 0

    我认为你有一个错误的cron工作的概念 .

    以这种方式考虑这个过程:

    管理员按下发送按钮 .

    ...该脚本创建了一个队列,即将电子邮件地址等添加到数据库表中,然后将其称为Queue . 并完成 .

    例如,您设置了一个每5分钟运行一次的cron作业 .

    ... cron启动一个PHP脚本,它处理Queue表中的X条目,发送这些电子邮件,从队列表中删除条目,然后停止 .

    ... cron作业在5分钟后自动重新启动并重复该过程...

    您所要做的就是计算每次执行cron作业时要发送的电子邮件数量,以及运行频率的频率,这样您就不会超出限制或被标记为垃圾邮件发送者 .

  • 0

    1- 是的,这是一个cron工作 .

    2- 你可以在Yii中这样做,参考 ConsoleCommand . 不知道你对cron了解多少?但是使用每10秒运行一次的consolecomamnd创建一个脚本,在队列中获取一个单独的电子邮件地址,并向该地址发送电子邮件将其从队列中删除 .

    3- 在操作中是,只需使用您需要的电子邮件地址构建一个队列(提示:mysql表)

  • 1

    我的建议是,如果你想使用cron做这样的事情,你会希望你的newsletter.php写出一个文件到磁盘或包含用户列表的数据库 . 您将编写一个简单的PHP脚本,该脚本将由cron触发,负责调用sendmail发送消息 . 当每个收件人邮寄时,您的脚本会将其从列表中删除 .

    或者,您可能想要查看一些基本的邮件列表软件 . 这些通常支持限制消息发送的概念 .

    我假设您正在尝试管理托管服务提供商对每小时发送的电子邮件数量的限制(反垃圾邮件控件)

  • 0

    是的cron作业可以在这种情况下使用 . 我个人已经开发了使用这种方法的新系统 . 但是,我发送350并且每小时做一次cron工作 .

    您应该检查第一行是否有任何电子邮件要发送,并且每小时都要运行一次cron作业 . 单击发送按钮时无需激活cron作业

  • 0

    cron 本身只按计划运行程序 . 它没有发送此小时,或者已发送或未发送过哪些电子邮件 .

    cron 在守护程序的控制下运行 . 虽然您可能可以通过控制器启用和禁用它,但您可能不会使用 cron ,通常需要它一直运行 .

    相反,将逻辑和约束放入 cron 运行的程序中 .

  • 0

    如果您可以使用系统或执行功能,您可以调用cron作业或终端中的任何其他东西都可以执行

    例如system(“ps aux | grep crond”);

相关问题