處理所以,我一直在接觸到越來越多的現實生活中的應用,其中: 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。
這就是我目前如何處理這個問題,但有時候認爲我需要更多的代碼才能使其工作有點令人沮喪。 有誰知道如何處理這些更優雅?
您是專業人士。顯然,這就是所需要的! –