php - 引导 Laravel 环境

标签 php laravel cron

我正在我的 Laravel 应用程序中构建一个类似 cron 的功能。为了确保多个启动请求中只有 1 个实例运行,我对 Shell 脚本进行 cron 调用,该脚本最终执行 PHP 文件。

在此 PHP 文件中当然需要访问 Laravel 的内置函数和 Facades。目前我需要 public/index.php 文件来引导 Laravel 环境。一切工作正常,我能够与 Laravel 环境进行交互。但是,它也会在每次启动时产生错误:

local.ERROR: exception 'Symfony\Component\HttpKernel\Exception\NotFoundHttpException' in 
/PATH_TO_LARAVEL/vendor/laravel/framework/src/Illuminate/Routing/RouteCollection.php:140

如何防止抛出此错误?或者还有其他方式引导 Laravel 吗? 我还尝试分别要求 bootstrap/autoload.phpbootstrap/start.php 文件,但环境似乎没有被引导。

谢谢。

最佳答案

诀窍在于,您需要同时使用 ./bootstrap/autoload.php./bootstrap/start.php 脚本来启动 Laravel 环境.

尝试创建一个文件:./bootstrap/cronloader.php:

<?php
// Laravel Autoloader
require __DIR__.'/autoload.php';

// Start Laravel
require_once __DIR__.'/start.php';

然后只需在脚本开头require_once 即可。

或者,写一个 artisan command替换你的脚本?因为你可以直接从 cron 调用 artisan,它会给你完整的 laravel 环境。

关于php - 引导 Laravel 环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22734210/

相关文章:

javascript - 带有 onkeyup 事件的输入标签用于建议数据列表,不适用于键盘上/下箭头键

javascript - 带有导出按钮的 Laravel 和 Html DataTable 不显示或不显示

Laravel 自定义规则的自定义验证错误消息

linux - 如何将一个分钟的 cron 延迟一个小时

php - mysql find_in_set 字符串开头

php - Zend Framework 2 数据库测试 - 非对象上的 canCallMagicCall()

javascript - 从一个 html 表单中提取数据并将其显示到另一页

mysql - 如何使用 laravel eloquent 从右边的 sql 中获取 5 个字符?

php - Laravel 每十分钟不工作

java - Websphere 上的 Cron 调度程序的 org.springframework.jndi.JndiLookupFailureException