【问题标题】:PHP file for Cron job runs automatically randomlyCron 作业的 PHP 文件自动随机运行
【发布时间】:2014-06-21 11:39:50
【问题描述】:

我有一个基于 PHP 的应用程序。我们必须每天运行一次 PHP 文件(比如 xyz.php)来发送电子邮件。我们每天早上使用 cPanel 中的 Cron 作业来运行该文件。我已将我的电子邮件设置为 cron 电子邮件,以便每次执行 cron 作业时都会收到通知。它在早上完美运行 - 正确发送所需的数据,并且每天早上我还会通过电子邮件收到 cron 作业成功执行的通知。

如果手动在浏览器中输入 PHP 文件的 URL (abc.com/xyz.php),也会发送电子邮件。

现在进入问题部分 - PHP 文件中的电子邮件 ID 开始随机收到电子邮件,有时每天收到 30-40 封电子邮件。电子邮件不完整且不正确。我没有收到 cron 作业已执行的任何通知电子邮件。所以,我的猜测是触发电子邮件的东西访问了 PHP 文件。我检查了 cPanel 中的访问日志,但里面什么都没有。

应用托管在 Hostgator 上,如果有帮助的话。

请帮忙。谢谢!

【问题讨论】:

    标签: php email cron


    【解决方案1】:

    当您在其他一些 php 文件上拥有 include 您的 abc.com/xyz.php 时可能会发生这种情况,当通过浏览器调用 php 页面并且表单的某些部分被执行时执行,您也不会收到邮件此类执行的通知

    【讨论】:

    • 不,它不包含在我们应用程序的任何其他 PHP 文件中。但是,此特定 (xyz.php) 文件中包含其他 PHP 文件。
    • 那么会有人通过浏览器执行文件,防止通过浏览器运行文件
    【解决方案2】:

    一些解释:

    • 您可能在某些代码中包含了该文件,
    • 有人正在访问该文件(但您已将其排除在外)
    • 可能定义了另一个 cron 作业(如果由于某种原因创建了两个作业或有人由其他面板在不同时间手动创建了它,则可能会发生这种情况) - 例如用于测试。
    • 可能有人手动执行

      1. 你必须自己找出答案。
      2. 通过密码或完全使用 .htaccess 阻止它
      3. 检查您的 cron 设置(也针对每个用户的 crontable)
      4. 查看日志

    另外 - 将一些代码写入您的 php 文件,记录执行方式和时间 - 这将允许您进一步测试正在发生的事情。

    【讨论】:

    • 1.不,不包含在代码中。 2. 是的,日志中没有任何显示。 3. 未定义其他 cron 作业。 4. 如果有人执行它,那么它应该显示在日志中还是不显示? 5.我会写代码来写日志。谢谢。一旦我发现任何与此有关的内容,就会更新。
    • 不,如果您不直接在文件代码中记录执行 - 它的执行可能不会在任何地方记录。
    • 如果我做了一些由 cron 执行的事情,我总是做两件事:1. 在里面写锁(有时我有每分钟执行一次的 cron,但一次被禁止运行多个副本) - 我使用具有写入权限的 fopen。如果文件打开 - 我是一个工作副本。如果没有 - 其他副本正在工作并且我关闭了。
    • 2.写许多日志(可以通过使用一个超全局变量来关闭它们:$_SERVER['debug']=false/true;(是的,我不介意为此目的)。我记录执行时间、工作进度等(到文件,db - 你认为最适合这个问题的方法)。
    • 3.我尝试编写可以被杀死的代码,然后再次执行 - 它将从停止的地方(或附近)恢复工作。抱歉做了 3 个 cmets - 我发现字符数限制;P
    猜你喜欢
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 2011-09-02
    • 2012-04-28
    • 1970-01-01
    • 2012-04-23
    • 2010-09-12
    相关资源
    最近更新 更多