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


how to check if a php file run via scheuled task is working

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

目前,BAT文件包含以下内容:

c: ''php''php.exe-f c:''www''somedomain''customcode''automed_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);

电子邮件未发送,服务器上也未创建文件。。。有没有更好的方法来测试或输出一些调试数据?

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

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

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

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