laravel 在自定义文件中使用 artisan
laravel use artisan in custom file
我正在直接管理,在 directadmin cronjobs 中你可以只 运行 个文件。
然后我尝试在 public 中创建一个类似 cron.php 的文件,并像这样使用我的命令:
<?php
require __DIR__.'/../bootstrap/autoload.php';
$app = require_once __DIR__.'/../bootstrap/app.php';
\Artisan::call('newsletter:send');
当我的 cron 运行 我有这个错误:
Fatal error: Uncaught Error: Class 'Artisan' not found in
如何在我的自定义文件中使用 Or Import Artisan class?
简单地创建一个应用程序实例并不意味着您的外墙就能正常工作,因为它们不在应用程序的范围内。
要使上述代码正常工作,您必须使用该应用程序创建 Artisan
门面使用的基础实例,即
$app->make('Illuminate\Contracts\Console\Kernel')->call('newsletter:send')
也就是说,你基本上是在重新发明轮子,因为 Laravel 为这个 out-of-the-box https://laravel.com/docs/5.2/scheduling.
提供了一个更优雅的解决方案
因此,与其为您的应用程序为一个 cron 命令创建另一个入口点,不如使用任务计划。这样做的一些额外优势是:
- 您可以在应用程序中定义所有的 cron 作业,这样您就可以更轻松地查看实际设置了哪些作业。
- 如果您最终将您的应用程序移动到不同的服务器,那么您不必担心再次设置所有的 cron 作业。
- 如果其他开发人员最终开始开发该应用程序,他们也会更好地了解正在发生的事情。
如果您不喜欢使用 Laravel 的任务调度的想法,并且您更愿意在您的 crontab 中定义所有这些,那么我建议为您的 cron 作业制作一个控制器,然后使用laravel 内置路由来为您处理请求。
希望对您有所帮助!
我正在直接管理,在 directadmin cronjobs 中你可以只 运行 个文件。 然后我尝试在 public 中创建一个类似 cron.php 的文件,并像这样使用我的命令:
<?php
require __DIR__.'/../bootstrap/autoload.php';
$app = require_once __DIR__.'/../bootstrap/app.php';
\Artisan::call('newsletter:send');
当我的 cron 运行 我有这个错误:
Fatal error: Uncaught Error: Class 'Artisan' not found in
如何在我的自定义文件中使用 Or Import Artisan class?
简单地创建一个应用程序实例并不意味着您的外墙就能正常工作,因为它们不在应用程序的范围内。
要使上述代码正常工作,您必须使用该应用程序创建 Artisan
门面使用的基础实例,即
$app->make('Illuminate\Contracts\Console\Kernel')->call('newsletter:send')
也就是说,你基本上是在重新发明轮子,因为 Laravel 为这个 out-of-the-box https://laravel.com/docs/5.2/scheduling.
提供了一个更优雅的解决方案因此,与其为您的应用程序为一个 cron 命令创建另一个入口点,不如使用任务计划。这样做的一些额外优势是:
- 您可以在应用程序中定义所有的 cron 作业,这样您就可以更轻松地查看实际设置了哪些作业。
- 如果您最终将您的应用程序移动到不同的服务器,那么您不必担心再次设置所有的 cron 作业。
- 如果其他开发人员最终开始开发该应用程序,他们也会更好地了解正在发生的事情。
如果您不喜欢使用 Laravel 的任务调度的想法,并且您更愿意在您的 crontab 中定义所有这些,那么我建议为您的 cron 作业制作一个控制器,然后使用laravel 内置路由来为您处理请求。
希望对您有所帮助!