使用 cronjob 运行 php 文件中的函数

2024-03-07

我的 php 文件(file1.php)中有一个函数。我正在尝试使用 cronjob 来调用此函数。我的 cron 作业命令是:

php /home/name/public_html/file1.php mail1

作为参考,函数代码如下,当直接从文件调用时可以工作(即问题似乎不在于函数本身。

function mail1($runTotal, $accountArray){
    $to = $accountArray[0]['phoneNumber'] . '@vzwpix.com';
    $subject = '';
    $msg = "You have spent $" . $runTotal . " of $1,750 since the beginning of the month.;;
    $msg = wordwrap($msg);
    $headers = 'From: [email protected] /cdn-cgi/l/email-protection';
    if (mail($to, $subject, $msg, $headers)) {
        echo $msg . " sent to " . $to;
    }
}

我是否以错误的方式调用该函数?


恐怕将您想要调用的函数的名称传递给 PHP 脚本不会自动运行该脚本中的函数。您的脚本文件将需要逻辑来响应传递给它的任何命令行参数,以便正确执行。

比方说file1.php其中定义了几个函数。只是一系列函数定义 - 函数之外没有代码。如果您在命令行上运行该文件($ php file1.php),将会发生的是 PHP 将加载该文件,解析您的函数,但是由于文件中没有任何内容calls任何这些函数,脚本都将到达末尾,执行将完成,并且实际上不会发生任何事情。

因此,为了执行其中一个函数,脚本需要检查提供的任何命令行参数,然后做出适当的反应。

在 PHP 中,$argv变量是一个数组,其中首先包含所运行的文件的名称,然后按顺序包含任何命令行参数。除非用引号括起来或正确转义,否则空格将用作命令行参数的分隔符。如果该命令是通过命令行运行的,则您可以在根范围*中使用该变量。

这是 PHP 的描述$argv多变的:

包含从命令行运行时传递给脚本的所有参数的数组。

注意:第一个参数 $argv[0] 始终是用于运行脚本的名称。

如果你跑php file1.php send mail --dry-run,那么$argv变量将是(此处以 JSON 格式显示):["file1.php", "send", "mail", "--dry-run"].

你可以用它做的就是放在你的末尾file1.php查看该文件的代码$argv变量并采取适当的行动。在您的问题中概述的具体情况下,请尝试在文件末尾添加类似的内容:

//If we have a command line argument
if (!empty($argv[1])) {
    switch ($argv[1]) {
        case "mail1":
            mail1(); //Call our mail() function
            echo "\n\nCalled function mail1()\n\n"; //Print what we did to the console
            break;
    }
}

现在当你开心的时候php file1.php mail1,这最终就是你的 CRON 工作正在做的事情,第一个参数 ($argv[1])是“mail1”,所以mail1switch 语句中的 case 被执行,它调用你的mail1函数并向控制台写入一条有用的注释,以便您知道它执行了您所要求的操作。

有用的链接:

  • http://php.net/manual/en/reserved.variables.argv.php http://php.net/manual/en/reserved.variables.argv.php
  • http://php.net/manual/en/features.commandline.php http://php.net/manual/en/features.commandline.php

希望这可以帮助!

* 通过根范围,我的意思是它不是全局的,因此您无法在函数或类内部访问它,除非您将其传递给它们,但在它们之外您可以访问它。在上面的代码示例中,由于该代码位于函数或类之外,因此它可以访问$argv.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 cronjob 运行 php 文件中的函数 的相关文章

随机推荐