PHP如何導致內存泄漏,緩衝區溢出,堆棧溢出和其他類似的錯誤? PHP甚至會導致這樣的錯誤?導致PHP崩潰
導致PHP崩潰
回答
通過造成一些有點無限的遞歸,你可以導致PHP崩潰。
例如,遞歸需要本身應該導致堆棧溢出文件:
require __FILE__;
或者在應該反序列化對象的魔法__sleep()
方法的遞歸,但呼籲serialize()
代替:
class sleepCrasher
{
public function __sleep()
{
serialize($this);
}
}
serialize(new sleepCrasher());
或者創建一個新class destructor實例:
class destructorCrasher
{
public function __destruct()
{
new destructorCrasher();
}
}
// Calling __destruct() manually is just for the sake of example,
// In real scenarios, PHP's garbage collector will crash PHP for you.
(new destructorCrasher())->__destruct();
除了作爲一個遞歸__toString()
:
class toStringCrasher
{
public function __tostring()
{
return strval($this);
}
}
strval(new toStringCrasher());
有PHP是針對保護的其他遞歸場景。例如,調用一個沒有退出條件的遞歸函數或遞歸自產生成器。這些不會導致崩潰,而是一個致命的錯誤。
更多的例子,你可能想看看:
愛說一句:'了shell_exec(「killall -11的httpd」);' – p4bl0 2010-03-14 13:36:37
我希望這個傢伙的身價,這並不成爲自動接受的答案,因爲它很難回答題。不錯的例子。 – 2010-03-15 21:27:26
PHP是一種解釋型語言,因此所有的PHP腳本從內存泄漏,緩衝區溢出保護堆棧溢出。
如何以往你會遇到的問題,例如:
整數溢出,如果你分配一個編號過大就會溢出,並不會發生異常。
出的內存,使用比在php.ini配置內存大小的內存
你可以做到這一點會引起任何語言溢出(如遞歸調用當前功能,盲目吃內存等方面的東西。)或依靠良好的PHP解釋器來完成這項工作。只需看看how many memory leaks were fixed in PHP5(我的最愛:在5.2.6中,他們修復了bug #44069:'使用.
而不是.=
'連接的巨大內存使用情況')。
總的來說PHP是ok(最多)如果你只想提供一個http請求。但是你不能真正做到複雜的東西(我曾經嘗試過實現一個Peer2Peer客戶端,服務器在10分鐘後死於內存短缺 - 當然可能是我的一個錯誤,但我花了幾天的時間發現泄漏我自己的代碼 - 無濟於事)。
- 1. 導致崩潰
- 2. Zorba PHP擴展導致PHP崩潰
- 3. ArrayAdapter導致崩潰
- 4. CGColorRef導致崩潰
- 5. performSegueWithIdentifier導致崩潰
- 6. UINavigationBar導致崩潰..!
- 7. presentViewController導致崩潰
- 8. SCNetworkReachabilityGetFlags導致崩潰?
- 9. preferences.getBoolean導致崩潰
- 10. facet_grid()導致崩潰
- 11. NSTimer導致崩潰
- 12. printf導致崩潰
- 13. pushViewController導致崩潰
- 14. setText導致崩潰
- 15. iOS:registerDefaults導致崩潰
- 16. UIPickerView導致崩潰
- 17. onBackPressed()導致崩潰
- 18. ViewPager導致崩潰
- 19. PHP中的Require_once導致崩潰
- 20. Public ObservableCollection導致崩潰
- 21. EKEventStore導致SpringBoard崩潰
- 22. 代碼導致崩潰(vb.net)
- 23. PyQt QTreeWidget.clear()導致崩潰
- 24. Android:意圖導致崩潰
- 25. 可能pthread_cond_signal導致崩潰?
- 26. 導致崩潰的頁表
- 27. SearchBarController謂詞導致崩潰
- 28. UITableView圖像導致崩潰
- 29. PyQt4 TextEdit.clear導致崩潰
- 30. Maya線程導致崩潰
希望沒有。它應該在它們發生之前檢測並避免這樣的錯誤。 – Gumbo 2010-03-06 10:40:14
http://stackoverflow.com/questions/849549/detecting-memory-leaks-in-large-php-stacks – Pavunkumar 2010-03-06 10:45:02
你的意思是PHP的引擎,或PHP腳本運行在引擎之上? – 2010-03-06 12:00:53