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
我想没有任何建议,我是通过在网络路线中编写的来完成的
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
| 归档时间: |
|
| 查看次数: |
907 次 |
| 最近记录: |