【问题标题】:how to check if a php file run via scheuled task is working如何检查通过计划任务运行的 php 文件是否正常工作
【发布时间】:2015-01-10 20:10:06
【问题描述】:

我有一个从批处理文件运行的 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);

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

【问题讨论】:

  • 我认为您的选择实际上只是电子邮件或将信息记录到文本文件。我很想看看其他人对此有何建议。

标签: php batch-file scheduled-tasks


【解决方案1】:

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

如果脚本从命令行而不是批处理运行,那么您的批处理文件设置可能存在问题。对我来说看起来不错,但您的设置、操作系统和/或权限可能存在一些特定的问题,此处并不清楚。

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

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

【讨论】:

  • 谢谢,通过命令行运行它,这是一个路径问题。没有意识到它会直接向 cmd 输出错误,但它确实对我来说很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-22
  • 1970-01-01
  • 1970-01-01
  • 2010-09-22
  • 1970-01-01
  • 2011-01-22
相关资源
最近更新 更多