如何从Laravel中的非命令调度任务中捕获输出?

时间:2016-01-14 17:59:03

标签: php laravel laravel-5.1

给出以下代码段:

    $schedule->call(function () {
        // echo "HELLO 123";   // nope
        // return "HELLO 123"; // also nope
    })
        ->everyMinute()
        ->sendOutputTo(storage_path('logs/cron/hello.cron.log'))
        ->emailOutputTo('me@example.org');

计划任务正在运行,正在生成电子邮件,但没有内容。我可以通过$schedule->exec$schedule->command捕获输出。

理想的最终状态是,在call方法中运行一些内部非命令进程,并将结果输出到文件/电子邮件中。

2 个答案:

答案 0 :(得分:5)

我只是用Google laravel scheduled outputdocumentation(红色框中的锚点上方)搜索了您正在使用的课程的文档:

Note: The emailOutputTo and sendOutputTo methods are exclusive to the 
command method and are not supported for call.

希望有所帮助。

答案 1 :(得分:2)

接受的答案让我得到了解决方案,但供将来参考:

$schedule->call(function () {
        // Do stuff

        // Report to file
        \Storage::append('logs/cron/hello.cron.log', "HELLO 123");
    })->everyMinute();