如何检查通过计划任务运行的php文件是否正常工作

时间:2014-11-13 15:56:28

标签: php batch-file scheduled-tasks

我有一个从批处理文件运行的PHP脚本。测试这是否有效的最佳方法是什么。

目前BAT文件包含:

c:\ php \ php.exe -f c:\ www \ somedomain \ customcode \ automated_scripts \ simple_email.php

我尝试双击批处理文件以查看它是否会运行php脚本,但里面的代码似乎没有做任何事情。

编码该文件中使用的样本:

    $myfile = fopen("newfile.txt", "w") or die("Unable to open file!");
    $txt = "Mickey Mouse\n";
    fwrite($myfile, $txt);
    $txt = "Minnie Mouse\n";
    fwrite($myfile, $txt);
    fclose($myfile);

    $headers  = 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

    $headers .= 'From: myemail@domain.com' . "\r\n" .
        'Reply-To: anotheremaik@someoneelse.com' . "\r\n" .
        'X-Mailer: PHP/' . phpversion();            

    mail('anotheremaik@someoneelse.com',"hello test","testing msg",$headers);

电子邮件未被发送且服务器上未创建文件...是否有更好的方法来测试或输出某些调试数据?

1 个答案:

答案 0 :(得分:2)

首先,在不使用批处理文件的情况下从命令行运行脚本,以确保它甚至可以正常工作。

如果脚本从命令行运行而不是从批处理运行,那么批处理文件设置可能存在问题。它对我来说很好,但可能有一些特定的设置,操作系统和/或权限,这里不清楚。

将其作为计划任务运行时,您可以使用退出代码来确定脚本是否成功完成。我个人从未尝试过使用PHP和Windows,但你可以使用exit(0);为了成功执行,退出(1);执行失败该结果可能会显示在计划任务的退出代码列中(同样,我不确定这一点)。

一般来说,最好将输出记录到文件中以进行调试,因为您可以获得有关问题的上下文信息(而不仅仅是成功/失败状态)。您可以使用PHP的error_log()方法写入现有日志文件。您可能需要编辑php.ini文件以设置log_errors = On和error_log = syslog。在Windows上我相信这会导致PHP登录到事件日志。