上篇文章【Thinkphp5實現悲觀鎖】已介紹過thinkphp5使用悲觀鎖實現高併發的場景,這篇文章將實際測試下。php
在shell裏進入到apache的bin目錄,輸入如下url:html
ab -n 100 -c 100 http://www.xyh.com/index/index/mysql_unlock 【不加鎖的狀況,模擬100次請求,每次100個用戶】mysql
備註:若是提示socket: Too many open files (24),請執行ulimit -a,而後ulimit -n 1024。下圖是我已經修改後的。sql
因爲在本機測試,若是併發太大,機器報錯,須要從新編譯apache。我這裏只是爲了測試thinkphp加鎖是否能知足業務需求,因此併發設爲100個,用來測試便可。數據庫的商品表,我把庫存設爲50個。正常狀況應該是:goods商品表中庫存total值爲0,銷量sell爲50,orders訂單表有50條記錄。通過測試,發現不加鎖的狀況以下圖:thinkphp
庫存tatol爲3個,銷量sell爲47,orders訂單表有49條記錄。很明顯這不符合實際的業務需求!(這仍是100次併發的狀況,若是幾十萬的併發,錯誤更加離譜。會直接給公司帶來巨大的損失)shell
下面再看看加鎖後的測試狀況:數據庫
庫存tatol爲0個,銷量sell爲50,orders訂單表有50條記錄。符合預期,知足業務需求!apache