[英]PHP: Simulate multiple MySQL connections to same database
我的MySQL慢查詢日志中不斷記錄插入查詢。
我想看看INSERT查詢花了多少時間進行100次同時插入操作(到同一個表)。
所以我需要模擬下面的內容。
從PHP到mysql服務器上的同一數據庫的500個不同的同時連接,所有這些連接都在同一個表中插入一行(同時)。
我需要使用任何負載測試工具嗎? 或者我可以簡單地編寫一個PHP腳本來執行此操作嗎?
有什么想法嗎?
PS:我在Windows上使用apache。
如果您在Windows上安裝了apache,則應該使用apache基准測試工具(ab.exe)。 創建您的php腳本以插入行並通過以下方式訪問它: http : //127.0.0.1/insert.php 。 通過運行此ab命令測試100個並發連接:
ab.exe -n 100 -c 100 http://127.0.0.1/insert.php
那應該通過你的PHP腳本同時運行這100個插入。
你使用的是PHP5.3嗎?
新的MySQL驅動程序(mysqlnd)可以處理並行查詢。
試試這個 :
<?php
$query = "SELECT 'test'";
$all_links = array();
for($i=0; $i<100; $i++) {
$link = mysqli_connect();
$link->query($query, MYSQLI_ASYNC);
$all_links[] = $link;
}
$processed = 0;
do {
$links = $errors = $reject = array();
foreach ($all_links as $link) {
$links[] = $errors[] = $reject[] = $link;
}
if (!mysqli_poll($links, $errors, $reject, 1)) {
continue;
}
foreach ($links as $link) {
if ($result = $link->reap_async_query()) {
print_r($result->fetch_row());
mysqli_free_result($result);
$processed++;
}
}
} while ($processed < count($all_links));
由於PHP通常是通過HTTP請求觸發的,因此您需要某人/某事來發出許多HTTP請求。
我多年來一直在使用http://jmeter.apache.org/ ,這對於這些場景非常有價值。
由於您要測試PHP的連接,因此您應該使用PHP運行測試。
您還想測試MySQL范圍的負載,因此最好從MySQL運行的同一台機器上運行PHP腳本(如果適用)。
關於“同時”事情的最后一個注意事項,你應該使用線程。 我個人從來沒有在PHP中使用過線程,但谷歌想出了這個php類 。
我希望這有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.