Google App Engine上的Laravel任务计划

Avi*_*yan 1 php cron google-app-engine laravel artisan

有什么方法可以php artisan在App Engine上执行命令?我需要设置Laravel的任务计划,这需要设置以下cron作业:

* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)

但是当我查看cron.yaml文档时,没有执行php文件的方法,似乎仅支持对URL的HTTP调用。

反正可以帮我吗?

更新1 请不要建议Artisan::handle($command)从控制器内部进行调用。我需要完全的PHP-CLI版本artisan

Avi*_*yan 5

我想没有任何建议,我是通过在网络路线中编写的来完成的

Route::get('scheduler', ArtisanController@handle)->middleware('app-engine-cron');
Run Code Online (Sandbox Code Playgroud)

这个在 ArtisanController

class ArtisanController extends Controller
{
    public function handle()
    {
        shell_exec('php '.base_path('artisan').' schedule:run > /dev/null 2>/dev/null &');
    }
}
Run Code Online (Sandbox Code Playgroud)

和这个中间件

class AppEngineCronMiddleware
{

    public function handle($request, Closure $next)
    {
        if (!$request->hasHeader('X-Appengine-Cron')) {
            return response()->json(trans('auth.unauthorized'), 401);
        }

        return $next($request);
    }
}
Run Code Online (Sandbox Code Playgroud)

最后cron.yaml像这样

cron:
- description: "Laravel Scheduler"
  url: /scheduler
  schedule: every 1 mins
  target: default
Run Code Online (Sandbox Code Playgroud)

任何有此问题的人都可以尝试一下,它按预期正在为我工​​作。无论如何,我们非常欢迎其他建议。特别是来自Google