【问题标题】:Laravel 5.6 - Timeout error after framework updateLaravel 5.6 - 框架更新后超时错误
【发布时间】:2019-02-24 22:48:28
【问题描述】:

两天前我开始遇到一个奇怪的问题。

我刚刚在我当前的 Laravel 5.6 项目中启动了composer update

在那之后,我对项目 API 的所有 ajax 调用(通过 axiosVue 组件完成)不再起作用。

没有 crud 操作正在执行,并且该过程似乎在任务开始之前被中断。

长时间超时后任何调用都会抛出此异常:

最长执行时间超过 30 秒

这是一个500 错误,涉及的文件已被标识为/vendor/laravel/framework/src/Illuminate/Database/Connection.php

知道是什么导致了这个问题吗?

我不确定在哪里特别检查,所以如果它可能有用,请告诉我我可以从源中分享什么,我会适当地更新问题。

提前感谢您的帮助。

【问题讨论】:

  • 检查你的服务器错误日志和 laravel 日志,看看是否有任何信息。
  • 创建一个没有数据库交互的ajax测试调用,只是静态json作为回复。数据库连接是罪魁祸首似乎很奇怪。在 web.php 和 api.php 中尝试调用。我真的很好奇你的问题的原因是什么。
  • 嗨@dimitri 我试图设置那个场景,但对我来说无法验证它,因为我刚刚注意到由于未知原因 laravel 不再编译我的组件了!编辑没有被重新编译,所以输出仍然相同(当然浏览器缓存被禁用)。
  • 更新:我解决了编译问题。现在,通过测试调用一切正常——控制器响应请求,获取数据。它似乎与数据库操作有关。所以 Laravel 更新无关紧要。我可以尝试认为这取决于我的 MAMP 配置,但这个问题在我更新到版本 5 之前就开始了......

标签: php laravel laravel-5 vue.js axios


【解决方案1】:

感谢Slack官方频道的@migser,我找到了原因。

没有任何形式的更新破坏了我的堆栈,但是两个 hasMany 相关模型中对 touches 数组的不当使用导致调用的任务冻结。

通过删除错误的 touches 声明 - 模型内部存在的带有关系声明的声明 - 所有 crud 任务再次正常工作。

感谢大家的提示和帮助。

【讨论】:

    【解决方案2】:

    尝试修改您的php.ini 并添加:

    ini_set('max_execution_time', 300);

    在你的.htaccess

    php_value max_execution_time 300

    然后:

    composer dump-autoload
    
    php artisan cache:clear
    

    最后,你应该再次测试它。

    【讨论】:

    • 感谢@henry,但目前没有任何改变。不过我还在调查。
    • max_execution_time 300 没有任何反应:没有任何动作,也没有例外。
    • 增加最大执行时间通常是个坏主意,除非您正在处理故意长时间运行的命令行脚本。它不能解决问题,也不能帮助找到它。
    猜你喜欢
    • 2015-11-26
    • 2022-08-22
    • 2019-02-07
    • 1970-01-01
    • 2019-03-25
    • 1970-01-01
    • 1970-01-01
    • 2017-10-30
    • 1970-01-01
    相关资源
    最近更新 更多