任何機構都可以給我介紹如何有效地編程以最小化PHP程序中的內存使用情況,並使用最小內存生成我的程序結果?如何在PHP中靈敏地使用每一位內存
回答
根據我如何閱讀你的問題,我認爲你可能會用PHP咆哮錯誤的樹。它從來沒有設計用於低內存開銷。
如果你只是想盡可能高效,那麼看看其他答案。請記住,每一個變量都會花費一定的內存,所以只能使用你所需要的,並讓垃圾回收器工作。確保只聲明局部作用域中的變量,以便在程序離開該作用域時可以獲取GC'd。對象將比標量變量更昂貴。但是我看到的最大的常見濫用是數據的多個副本。如果你有一個大的陣列,operate directly on it rather than copying it(它可能不是CPU的高效率,但它應該更有效率)。
如果你想在低內存環境下運行它,我建議找一種不同的語言來使用。 PHP很好,因爲它爲你管理一切(關於變量)。但是這種類型的轉換和靈活性需要付出代價(速度和內存使用)。每個變量都需要存儲大量的元數據。因此,一個8字節的int(32位)需要8個字節來存儲在C中,它可能會在PHP中佔用超過64個字節(因爲所有與之相關的「跟蹤」信息,例如類型,名稱,範圍信息,等等)。由於PHP並不是爲大內存加載而設計的,因此通常可以看到這種開銷。所以這是一個折衷。更多內存用於簡化編程。但是,如果你有緊張的記憶力限制,我會建議轉向不同的語言......
很難提供有關您要做什麼以及爲什麼內存利用率是問題的信息很少的建議。在常見的情況下(服務於許多請求的Web服務器),內存不是限制性工廠,儘可能快地爲請求提供服務,即使這意味着爲了提高速度而犧牲內存。
然而,以下的一般準則適用於:
unset
的變量,只要你不需要他們。在一個寫得很好的程序中,這將不會產生太大的影響,因爲超出範圍的變量會產生相同的效果。- 在長時間運行的腳本中,使用循環引用的變量很多,並且如果使用PHP 5.3,trey會在某些點顯式調用垃圾回收器。
首先:不要嘗試通過使用引用來優化內存使用情況。 PHP是足夠聰明,不,如果你做這樣的事情,複製變量的內容:
$array = array(1,2,3,4,5,);
$var = $array;
PHP會當你寫它的內容僅複製變量。所有的時間使用參考,因爲你認爲他們會節省你複製變量內容往往會倒退;)
但是,我認爲你的問題很難回答,只要你更精確。
例如,如果您使用的是文件,建議不要總是以file_get_contents()
整個文件,但使用f(open | ...)函數一次只加載文件的小部分,甚至可以跳過整個文件塊。
或者,如果您正在使用字符串,請儘可能使用返回字符串偏移量而不是其他字符串的函數(例如,strcspn而不是strpbrk)。
- 1. 如何在mysql中使用php存儲敏感用戶數據
- 2. 科爾多瓦地理位置手錶位置靈敏度
- 3. 如何在內聯元素中優雅地使用css精靈?
- 4. 如何安全地擦除內存中的敏感信息
- 5. 靈敏度Android位置傳感器
- 6. BackgroundSubtractorMOG靈敏度
- 7. 在內存中存儲敏感數據
- 8. 如何動態地在多個位置使用同一個精靈?
- 9. 使用R進行靈敏度分析:如何製作我自己的地圖
- 10. iMac內部靈敏的滑動滑塊
- 11. 如何修改viewpager的靈敏度?
- 12. iScroll的靈敏度
- 13. 如何在PHP中安全地存儲包含敏感數據的cookie?
- 14. 在Java中更改鼠標靈敏度
- 15. 在GLFW中設置鼠標靈敏度
- 16. 如何在PHP中使用內存使用警告?
- 17. 如何使用PHP將數據存儲在RAM內存中?
- 18. 在PHP中使用地理定位
- 19. 在PHP中存儲敏感數據
- 20. 如何讓MKAnnotationView在MapKit中更加靈敏?
- 21. 如何靈活地在表格中定位UIbuttons?
- 22. 如何在JavaScript中清除敏感內存?
- 23. 如何在PHP中存儲敏感數據?
- 24. 如何在Android中使用ADOBE AIR存儲敏感數據
- 25. 如何安全地使用內存?
- 26. 如何在Android中使用imageloader釋放內存位圖?
- 27. 如何避免在組殼體的靈敏度通過使用Apache鑽頭
- 28. 調整SimpleOnGestureListener.onFling()靈敏度
- 29. 靈敏度列表錯誤
- 30. ds觸摸屏靈敏度