【问题标题】:Laravel large cron tasks don't work properlyLaravel 大型 cron 任务无法正常工作
【发布时间】: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

标签: php laravel cron


【解决方案1】:

我的设置有一个非常相似的问题。我能找到的最佳解决方案是迁移到 Larwvel Queue 系统。也许为每次更新创建一些工作并加快进程。

另一个可能会增加 php 的执行时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-17
    • 1970-01-01
    • 1970-01-01
    • 2016-03-11
    相关资源
    最近更新 更多