【问题标题】:PHP Cron Manager Script stops page loadPHP Cron Manager 脚本停止页面加载
【发布时间】:2023-04-10 04:42:01
【问题描述】:

我正在尝试制作一个脚本来安排在特定日期发送电子邮件的 cron 作业。我跟着this tutorial 制作了一个 php cron 管理器,它加载没有问题。但是当我尝试与脚本建立 SSH 连接只是为了查看它是否会引发任何错误时,页面停止加载我放置代码的位置,没有显示错误,也没有在任何地方创建 error_log 文件,我真的不明白为什么页面停止加载。

$crontab = new Ssh2_crontab_manager('xxxxxxxxxxx.xxx', '22', 'xxxxxxx', 'xxxxxxxxxxx');

我只希望它能够连接并继续页面,或者它至少会给我一个可以搜索解决方案的错误

什么都没有,只是一个部分加载的页面,没有错误,它就停在那里。

【问题讨论】:

  • 它试图在哪里建立 SSH 连接?所有代码都在同一台服务器上运行,对吧?您自己没有对服务器的 SSH 访问权限吗?我不得不说这可能是我见过的最糟糕的维护 crontab 的方法
  • 是的,我自己可以访问SSH服务器,所有代码都在同一个服务器上。问题是我需要自己的代码来制作和删除 cron 作业,而不必手动完成所有这些任务。我可以让脚本永远每小时运行一次,但我希望脚本能够在完成后自动调度和自动删除
  • “无需手动完成所有这些任务” 您花了多长时间编写本指南?您知道创建 cron 作业实际上是 行代码,对吧?您的预定电子邮件是如何生成的?你用什么来发送它们?我有很多项目都在做类似的事情,它们都只是作为每日 cron 作业运行,这些作业检查数据库以查找当天向谁发送电子邮件,生成电子邮件并发送。 Cron 用于重复任务,如果你真的想安排你的命令在未来只运行一次,你应该使用at
  • 我想安排一个作业来发送电子邮件,但不是一次全部发送,而是每小时分成一定数量,所以我试图设置一个创建每小时作业的 cron 作业然后删除自己,每小时作业发送一些电子邮件然后停止,并在没有更多电子邮件发送后删除自己。抱歉,如果这有点令人困惑
  • 您要发送的电子邮件地址是否从数据库或其他地方检索到?

标签: php ssh cron


【解决方案1】:

您上面的方法完全使您尝试做的事情复杂化。您有一个 php 脚本,您想在一天中以特定的时间间隔运行,每次向您数据库中的人发送几封电子邮件。

显然我不知道您的数据库是什么样的,但这是一个基本概念。

  • 在您的电子邮件地址数据库中添加一个名为 send with 默认值设置为 0
  • 编写您的 php 脚本并在您的数据库查询中使用 LIMIT = 10 或 每次运行时只检索几个电子邮件地址, 使用WHERE sent = 0 仅检索您尚未发送的电子邮件地址 还没有
  • 然后在脚本运行到UPDATE 每行到SET sent = 1 将这些用户标记为已通过电子邮件发送。包括一些条件代码,以便在没有更多电子邮件的情况下 那天的地址WHERE sent = 0 然后脚本就退出了。

  • 创建一个 cron 作业,以您选择的时间间隔运行,该时间间隔运行您的 php 脚本,然后离开它。

没有必要删除 cron 作业,如果没有要发送的电子邮件,它会短暂运行并退出。 cron 作业的全部意义在于自动执行重复性任务,您设置一次就忘记了。过滤器足够灵活,可以让您对它们的运行时间进行大量控制。

例如,0 9-17/2 * * 1-5 php /path/to/script.php 将在周一至周五 0900 到 1700 之间每隔一小时运行一次脚本

【讨论】:

    猜你喜欢
    • 2012-11-05
    • 1970-01-01
    • 1970-01-01
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多