laravel在自定义文件中使用artisan

laravel在自定义文件中使用artisan,laravel,laravel-5,laravel-5.2,crontab,Laravel,Laravel 5,Laravel 5.2,Crontab,我正在从事direct admin工作,在directadmin cronjobs中,您可以只运行文件。 然后,我尝试在公共场合创建一个类似cron.php的文件,并使用我的命令,如下所示: <?php require __DIR__.'/../bootstrap/autoload.php'; $app = require_once __DIR__.'/../bootstrap/app.php'; \Artisan::call('newsletter:send'); 简单地创建应用程序实

我正在从事direct admin工作,在directadmin cronjobs中,您可以只运行文件。 然后,我尝试在公共场合创建一个类似cron.php的文件,并使用我的命令,如下所示:

<?php
require __DIR__.'/../bootstrap/autoload.php';
$app = require_once __DIR__.'/../bootstrap/app.php';
\Artisan::call('newsletter:send');

简单地创建应用程序实例并不意味着你的外观可以正常工作,因为它们不在应用程序的范围内

要使上述代码正常工作,您必须使用应用程序创建
Artisan
facade使用的底层实例,即

$app->make('Illuminate\Contracts\Console\Kernel')->call('newsletter:send')
这就是说,你基本上是在用这个轮子重新发明轮子,因为Laravel提供了一个更优雅的开箱即用的解决方案

因此,您可以使用任务调度,而不是为一个cron命令为应用程序创建另一个入口点。这样做的一些额外好处是:

  • 您可以在应用程序中定义所有cron作业,以便更轻松地查看实际设置的作业
  • 如果您最终将应用程序移动到其他服务器,那么您就不必担心再次设置所有cron作业
  • 如果其他开发者最终开发了该应用程序,他们也会对正在发生的事情有更好的了解
  • 如果您不喜欢使用Laravel的任务调度,并且希望在crontab中定义所有这些任务,那么我建议为您的cron作业制作一个控制器,然后使用Laravel的内置路由为您处理请求


    希望这有帮助

    laravel有一个预定义的控制台类来处理你的cron@KhanShahrukh你读了我的问题吗?如果您在公共目录中,我如何在自定义文件中使用artisan类?您的路径不应该是
    \uuuu DIR\uuu./../bootstrap/autoload.php'
    \uuu DIR\uuu./../bootstrap/app.php'
    ?@RossWilson这是我键入的错误。。在我的档案里是真的