2017-07-31 243 views
0

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

* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1 

但我看着cron.yaml文件,没有执行PHP文件的方法,似乎是唯一支持HTTP调用URL。

反正可以帮我解决这个问题吗?

UPDATE 1 请不要建议从控制器内部调用Artisan::handle($command)。我需要的artisan

回答

1

我想没有确切的建议PHP-CLI版本,我已经通过网络途径

Route::get('scheduler', [email protected])->middleware('app-engine-cron'); 

这个写这在ArtisanController

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

,这做到了这一点中间件

class AppEngineCronMiddleware 
{ 

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

     return $next($request); 
    } 
} 

最后cron.yaml这样的

cron: 
- description: "Laravel Scheduler" 
    url: /scheduler 
    schedule: every 1 mins 
    target: default 

任何人都有这个问题,可以试试这个,它正在为我工​​作的预期。无论如何,其他建议非常受欢迎。特别是来自谷歌