建议 - 我需要开发一个内存使用率高,持续时间长的脚本

Fel*_*elá 0 php memory

我今天遇到了新的挑战.我将开发一个脚本,它将获取一些大型data_log(fopen)并将其插入数据库.昨天我做了我的第一次测试,我估计这个脚本需要运行一周来处理日志.

我做了一些env配置,比如set_time_limitset_memory_limit.

但是,在一段时间(15分钟)后的第一次测试中,应用程序崩溃了.机器在崩溃时运行2gb内存.

消息错误:

PHP Fatal error: Allowed memory size of X bytes exhausted (tried to allocate Y) in whatever.php
Run Code Online (Sandbox Code Playgroud)

请记住脚本/代码没问题.

Joh*_*hnP 6

脚本代码不正常.你没有超时,你只是耗尽内存来存储从日志文件中加载的任何数据.

无需查看代码或了解上下文,您应该查看以下选项.

  1. 自己清理,这样就不会使用越来越多的内存.如果您正在从文件读取数据或向文件写入数据,请确保每隔一段时间清除内存中的数据(取决于循环)

  2. 修改脚本以使用数据块.让脚本每隔一分钟运行一次,并在处理完部分数据后关闭它.这将保持较低的内存要求,并且您也没有连续运行的脚本(从您停止的地方轻松继续)