回答
$ch
將超出範圍,從而有資格進行垃圾回收。當發生這種情況時,資源將被正確釋放並關閉。至少當腳本執行結束時,所有資源都將被正確處置。因此,手動關閉資源並非真的需要;但保持資源使用盡可能低是一種很好的做法,尤其是對於長時間運行的腳本。
PHP 5.5的功能try..catch..finally
,它允許你總是關閉這樣的資源,即使在拋出異常的情況下。 (我剛剛意識到這並不適用於這種情況。)
您將要在拋出異常之前關閉句柄。
if (!$response)
{
curl_close($ch);
throw new Exception('Boom! No response...');
}
當你拋出一個異常,它會停止在該節和氣泡一直到那裏你抓住它執行任何更多的代碼的,不然你會:
Fatal error: Uncaught exception
在另一方面,如果你不要關閉句柄,那真的不是那大問題。只是不要養成這樣的習慣;)
但是,再次查看你的代碼,你的異常沒有任何意義。您將已關閉它在這種情況下...
爲什麼它沒有意義? –
因爲拋出的異常說你沒有關閉'$ ch',但是前面的if語句不檢查你是否關閉了'$ ch' :) – Jimbo
異常描述是描述性的以獲得我的觀點不過,它會引發響應失敗。因此,爲什麼我想知道如果我拋出一個異常並且不會關閉卷曲,PHP會正確清理 –
- 1. curl_init undefined?
- 2. curl_init()不起作用
- 3. curl_init和curl_exec:提取表?
- 4. curl_init間歇性返回NULL
- 5. curl_init中的PHP變量URL
- 6. PHP的curl_init()不工作
- 7. PHP:if(function_exists('curl_init'))是否有效?
- 8. 如何配置php curl_init函數
- 9. 如何通過curl_init使用代理?
- 10. 調用未定義函數curl_init()。
- 11. 如何將curl_init設置爲變量?
- 12. FCM - 實現從curl_init()在GAE遠
- 13. curl_init($ url)返回資源ID#7
- 14. curl_init在Macports php5安裝後丟失
- 15. 如何將curl_init調用轉換爲curl_multi_init
- 16. 調用未定義功能curl_init()PHP-GTK
- 17. PHP curl_init不能在控制檯工作
- 18. 調用未定義功能curl_init()
- 19. 是否有可能有兩個curl_init
- 20. 將PHP函數curl_init()來的ColdFusion
- 21. 在使用curl_init的PHP錯誤()
- 22. WampServer - 的browscap.ini是不存在和curl_init()不工作
- 23. 使用在Zend中的應用curl_init導致會話錯誤
- 24. 未捕獲的錯誤:調用未定義的函數curl_init()
- 25. PHP的函數curl_init()變量作爲數組變量
- 26. PHPUnit - 調用未定義函數curl_init()錯誤
- 27. 如何在調用curl_init之後更改HTML源代碼?
- 28. '$ ch'和'-F'在$ ch = curl_init()中代表什麼?
- 29. 捲髮不正確安裝(調用未定義功能curl_init())
- 30. curl_init()僅在腳本從cmd運行時才定義
+1,這是非常翔實的,尤其是5.5的東西,謝謝! – Jimbo
我想我可以在自己的類中包裝捲曲,並讓超出範圍處理破壞或將會過度殺傷? –
@天使矯枉過正。正如我所說的,當資源超出範圍時,資源已經自動釋放,將這個已經存在的功能封裝在另一個類中是毫無意義的。 – deceze