处理所以,我一直在接触到越来越多的现实生活中的应用,其中: SELECT * FROM table
太重已经,导致到 Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 47 bytes) in
。优雅处理大的MySQL行由PHP
什么我目前做的是将它们分MySQL的行成batches
,设置变量$perPage
,然后$_GET['page']
变量传递到页面,一些链接:process.php?page=1
我认为这是“好”。但有时候,我们希望完全自动化。所以我设置$nextPage = (int) $_GET['page'] + 1
,然后重定向页面,然后处理这些MySQL的行 header("Location: process.php?p="$nextPage)
现在,经过迭代,这将给你一些问题:
- 其难以调试。如果在第3页发出警告/通知,您将无法看到这些输出,除非您记录它们或查看您的php日志。
- 浏览器不允许你重定向太多。所以,我们要么使用命令行curl,要么编写另一个php脚本,它将跟踪
process.php
并启用follow-redirect。
这就是我目前如何处理这个问题,但有时候认为我需要更多的代码才能使其工作有点令人沮丧。 有谁知道如何处理这些更优雅?
您是专业人士。显然,这就是所需要的! –