【发布时间】:2021-08-18 06:57:05
【问题描述】:
我在 laravel 中有一个任务,每小时检查一个文件夹中是否有要处理的 txt 文件,如果找到任何文件,它会打开它并读取每一行以启动一系列步骤,包括连接到 Web 服务和在数据库中保存动作。
问题是,当它是一个小数据时它工作得很好,但是对于一些大数据(超过 1100 条记录),运行这个任务的命令总是抛出这个错误:
所以我必须修改任务,使其跳过我已经处理的行并继续执行尚未读取的行,依此类推,直到任务每次执行时都设法完成读取文件。
我应该如何配置才能避免这种情况发生?
我刚刚在文件 Kernel.php 上写了这个:
$schedule->command('imp:kenan')->hourly()
希望你们能帮助我。
提前问候和感谢。
【问题讨论】:
-
如果您的 cron 占用的时间超过默认的
max_execution_time来完成任务,请尝试在 cron 中增加它。@ini_set('max_execution_time, 0); set_time_limit(0); -
@Haridarshan 感谢您的回复,我将 php.ini 中的最大执行时间设置为 3 小时,但在 1 个半小时后失败,所以我不知道为什么它不需要那个时间,无论如何让我尝试在任务开始时添加 set_time_limit。
-
两者都是一样的,所以如果你已经增加了
max_execution_time,那么就不需要使用set_time_limit(0);。你也试过增加memory_limit吗? -
@Haridarshan 我修改了 php.ini 和它的相同结果,即使这次失败的时间比平时少T_T