You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 10导入igaster/laravel_cities时内存耗尽问题求助

问题原因及修复方案

问题原因

错误出在Laravel Telescope的IncomingEntry.php第79行,核心原因是Telescope会在控制台命令执行期间,实时记录所有操作的详细日志(包括每一次数据库查询、模型创建/更新动作)。虽然你导入的UA.txt仅6.8MiB,但geo:seed命令会循环创建大量地理数据模型实例,Telescope会把这些操作的日志数据全部暂存到内存中,随着任务推进,内存占用持续累积,最终触发内存耗尽错误——哪怕你设置了很高的CLI内存限制,也架不住日志数据的无节制堆积。

修复方案

1. 临时禁用Telescope执行该命令

最简单直接的方法是在执行geo:seed时,通过环境变量临时关闭Telescope:

TELESCOPE_DISABLE=true php -d memory_limit=6500M artisan geo:seed UA --append --chunk=10

这个方法不会影响Telescope的日常使用,只是临时跳过当前命令的日志记录。

2. 让Telescope永久忽略geo:seed命令

如果需要频繁执行该命令,可以修改Telescope的配置文件config/telescope.php,在ignore_commands数组中添加该命令:

'ignore_commands' => [
    // 已有的忽略命令
    'geo:seed',
],

配置生效后,Telescope会自动跳过该命令的日志记录,从根源避免内存溢出问题。

3. 优化Telescope日志存储策略(辅助方案)

如果不想完全禁用该命令的日志,可以调整Telescope的日志存储规则,比如限制单条命令日志的大小:
在config/telescope.php的entries配置中修改command的记录策略:

'entries' => [
    'command' => [
        'enabled' => true,
        'size_limit' => 1024 * 1024, // 限制单条命令日志大小为1MB
    ],
    // 其他日志类型配置
],

不过这个方法属于辅助优化,核心解决手段还是前两种。

4. 进一步降低chunk参数(辅助方案)

你已经使用了--chunk=10,可以尝试调至更小值(比如--chunk=5),减少每次批量处理的数据量,间接降低Telescope单次记录的日志数据规模。

内容的提问来源于stack exchange,提问作者mstdmstd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 04:16:05