我正在开发直接管理员,在directadmin cronjobs中你可以运行文件。 然后我尝试在公共场合创建一个像cron.php这样的文件并使用我的cammands:
<?php
require __DIR__.'/../bootstrap/autoload.php';
$app = require_once __DIR__.'/../bootstrap/app.php';
\Artisan::call('newsletter:send');
当我的cron运行时我有这个错误:
致命错误:未捕获错误:
中找不到“Artisan”类
如何在我的自定义文件中使用或导入Artisan类?
答案 0 :(得分:1)
简单地创建应用程序的实例并不意味着您的外观将会正常工作,因为它们不在应用程序的范围内。
要使上述代码正常工作,您必须使用该应用程序来制作Artisan
外观使用的基础实例,即
$app->make('Illuminate\Contracts\Console\Kernel')->call('newsletter:send')
话虽这么说,你基本上正在重新发明这个,因为Laravel为这个开箱即用的https://laravel.com/docs/5.2/scheduling提供了一个更优雅的解决方案。
因此,您可以改为使用任务计划,而不是为一个cron命令创建应用程序的另一个入口点。这方面的一些额外优势是:
如果您不喜欢使用Laravel的任务调度的想法,并且您希望在crontab中定义所有这些,那么我建议为您的cron作业创建一个控制器,然后使用laravel的内置路由来处理请求对你而言。
希望这有帮助!