我使用簡單的PHP查詢從數據庫中獲取行,表中有7000行以上,每當我獲取所有行時,PHP不工作和腳本死亡,但是當我將結果限制爲6400時,一切正常。 我應該知道MySQL或PHP有任何限制嗎?如果有的話,我需要配置這些設置。 任何幫助是高度讚賞。 請注意,我的PHP設置允許腳本執行時間爲1800秒,內存使用率設置爲512MB。PHP/MySQL如果行數大於6400不會返回任何結果
1
A
回答
2
爲什麼你需要那麼多行?我很確定php會因爲內存不足而死亡。
在控制檯中運行您的查詢,查看是否有超過7000行沒有問題。如果它返回所有那裏,你可以肯定它是PHP,而不是你的數據庫,我相信它是PHP。
無論你做什麼,最好是循環數據,也就是所謂的「分頁」,並將其讀入例如100行的數據塊並對其進行處理,0-100,100-200,200-300 ...
+0
就是這樣,內部存儲器設置爲32M,我將其設置爲256M,現在可以工作。謝謝你的努力 – zokibtmkd 2012-04-02 09:06:09
1
你有2個解決方案,因爲我看到它:
1)一個@burzum建議。真的很好,雖然你必須根據你的服務器負載(如果它不是恆定的)根據經驗確定最大大小。
mysql_unbuffered_query
確實有一些缺點,因爲描述:
的
mysql_unbuffered_query()
的好處是有代價的:你不能從mysql_unbuffered_query()
返回的結果集使用mysql_num_rows()
和mysql_data_seek()
,直到所有行都被提取。您還必須從未緩衝的SQL查詢中獲取所有結果行,然後才能使用相同的link_identifier向MySQL發送新的SQL查詢。
但因爲你正在處理大數據集,似乎有充分理由...
相關問題
- 1. select-xml不會返回任何結果
- 2. 查詢不會返回任何結果
- 3. $ geoIntersects不會返回任何結果
- 4. 如果結果大小大於1,Hibernate會返回重複值
- 5. 任務等待不會返回結果
- 6. r函數不返回任何結果
- 7. SQL大於&小於語句不會返回正確結果
- 8. Dns.BeginGetHostEntry不會返回結果
- 9. JSP返回任何結果
- 10. SQLiteQueryBuilder返回任何結果
- 11. .Fortran()返回任何結果
- 12. GraphQL不會返回結果(返回null)
- 13. LDAP不返回任何結果
- 14. Typeahead和Laravel不返回任何結果
- 15. CRM RetrieveMultipleResponse不返回任何結果
- 16. Laravel搜索不返回任何結果
- 17. Phoenix Query Server不返回任何結果
- 18. PHP PDO不返回任何結果
- 19. glob.glob不返回任何結果
- 20. Ajax AutcompletExtender不返回任何結果
- 21. php json_decode不返回任何結果
- 22. GFCircleQuery不返回任何結果
- 23. KSOAP2不返回任何結果
- 24. Solrj getBeans()不返回任何結果
- 25. Geo Data API不返回任何結果
- 26. JPA EntityManager createQuery不返回任何結果
- 27. 嵌套Promise.map()不返回任何結果
- 28. @Query不返回任何結果
- 29. 返回結果取決於行計數
- 30. 如果查詢不返回任何結果,如何停止執行腳本
*如何*它死?任何錯誤消息?你檢查過日誌嗎? – deceze 2012-04-02 06:39:44
腳本在死前運行了多久?你是否嘗試像'php -f/path/the_script.php'那樣在命令上運行腳本並查看是否可以檢測到某些內容?你可以在處理/顯示它們之前打印返回的行數,以查看問題是數據庫還是php/webserver? – Yaniro 2012-04-02 06:42:40
當我使用查詢:「SELECT * FROM table」它只是顯示空的空白頁面,但是當我使用「SELECT * FROM table LIMIT 6400」時,它會打印行,因爲它使用error_reporting(E_ALL)和ini_set ('display_errors',1),根本沒有顯示錯誤,只是死在空白頁面。它曾經工作時表中少於6490行,但不再。我擔心這可能是一些服務器設置,我不知道。 – zokibtmkd 2012-04-02 06:46:46