![]() |
1
4
只有当脚本出现“内存耗尽”错误时,才会出现内存泄漏问题。PHP很乐意自己对任何不常用的对象/变量进行垃圾收集,但除非必须这样做,否则收集器将无法正常工作—垃圾收集可能是一个非常昂贵的操作。 即使您不断地重用相同的对象/变量,内存使用率也会上升,这是正常的——直到内存使用率超过某个级别,收集器才会启动并清理房屋。 我怀疑,如果将用户ID成批地分为多个组,并发布较少的更新,从而使用每个组更改更多的记录,您可以使事情运行得更快。例如,执行以下操作:
而不是对每个用户进行一次更新。通过DB接口层的往返次数更少,服务器上的时间更多=运行更快。
此外,正如您在评论中所说,考虑一下现在将其扩展到数百万用户的影响。一百万个单独的更新将花费大量的时间来运行,因此
|
![]() |
2
2
最好的方法可能是获取所有用户ID并将它们刷新到一个文件中。 然后运行一个新的脚本,它将管道分叉为x个数量的工人无人机。然后给他们一个小的用户ID列表,在他们完成每个列表时进行处理。使用多个CPU/核心/服务器,您可以更快地完成任务。如果一个工人失败了,就重新开始。 要将其他服务器用作工作线程,您可以从工作线程使用curl/fopen/soap/etc来调用它们。 |
![]() |
3
1
因此,没有可供更新查询使用的结果。 无论如何,你的方法不是最好的开始。尝试使用mysqli参数化语句,或者(甚至更好)直接更新数据库中的行。看起来循环中的所有SQL都可以用一条update语句来处理。 |
![]() |
4
1
在每次迭代中,您可能会看到额外的已用内存,部分原因是PHP还没有垃圾收集不再被引用的内容。 |
![]() |
5
1
从 php.net memory_get_usage manual :
当这个参数设置为true时,脚本显示内存没有增加,正如我预期的那样。 |
![]() |
6
0
这个
|
![]() |
Jacco · 未能格式化我的日期以在php中正确工作 1 年前 |
![]() |
jay ram · 如何在URL核心php中从API获取JSON? 1 年前 |
|
Ishwarya A · php电子表格在浏览器中显示多张excel 1 年前 |