2008-09-15 49 views
2

我發現自己用PHP中的memcached做了一些相對先進的東西。思考和解決由緩存的無鎖特性引起的競爭條件和併發問題正在成爲一種心理上的掙扎。測試/調試/修復PHP併發性問題的工具?

PHP似乎工具相當差,當涉及到併發(線程,任何人嗎?),所以我不知道是否有任何解決方案在那裏測試/調試這個正確。

我不想等到兩個用戶請求兩個腳本同時運行爲並行進程並導致併發問題,這會讓我撓腦袋,或者直到它滾雪球時我纔會注意到進入clusterfsck。

任何魔法PHP併發棒我應該知道的?

回答

0

並非專門針對這個問題,但:FirePHP

+0

對於我更喜歡​​我現在的基於文件的記錄系統,具有精確的時間戳,可以確認哪些運轉時的幫助特定的問題。 – Gilles 2008-09-15 21:13:21

3

PHP是不適合多線程一種語言,我不認爲它永遠不會是。

如果您需要互斥的功能,PHP有一個Semaphore功能,您可以在。

內存緩存沒有互斥能力編譯,但它可以通過Memcache::add()方法進行仿真。

如果您正在使用MySQL數據庫,並且正試圖阻止某種競爭條件損壞,則可以使用lock tables語句或使用transactions

+0

感謝您的指點!我仍然在測試部門尋找一些東西,而不是在真正的併發情況下進行實際測試時添加安全網。例如,能夠做信號量很酷,但如果它不能被正確測試,那有什麼意義呢? – Gilles 2008-09-15 21:22:20

1

你可以嘗試敲着你的代碼的負載測試工具,可以使在同一時間多個請求。想到了Jmeter