02/10/2018, 18:10

Lấy thông tin “Server Load” bằng PHP

Đôi khi bạn muốn kiểm soát lượng truy cập vào website của mình, thông qua Apache bạn có thể tính toán được thông số lượng truy cập hiện tại. Đôi khi bạn muốn kiểm soát lượng truy cập vào website của mình, thông qua Apache bạn có thể tính toán được thông số lượng truy ...

Đôi khi bạn muốn kiểm soát lượng truy cập vào website của mình, thông qua Apache bạn có thể tính toán được thông số lượng truy cập hiện tại.

Đôi khi bạn muốn kiểm soát lượng truy cập vào website của mình, thông qua Apache bạn có thể tính toán được thông số lượng truy cập hiện tại. 
Dựa trên hàm get_server_load(), giả sử server của bạn chỉ cho phép tối đa 1000 lượt truy cập cùng 1 thời điểm, và lượt truy cập thứ 1001 sẽ phải chờ, bạn chỉ cần viết 1 đoạn code sau: 

CODE

if (get_server_load(true)>1000){ 
echo "Server busy now. Try again later!"; 
exit(0); 
}



Dưới đây là hàm tính get_server_load(); 

CODE

<?php 
function get_server_load($windows = false) { 
$os = strtolower(PHP_OS); 
if(strpos($os, "win") === false) { 
if(file_exists("/proc/loadavg")) { 
$load = file_get_contents("/proc/loadavg"); 
$load = explode(' ', $load); 
return $load[0]; 

elseif(function_exists("shell_exec")) { 
$load = explode(' ', `uptime`); 
return $load[count($load)-1]; 

else { 
return false; 


elseif($windows) { 
if(class_exists("COM")) { 
$wmi = new COM("WinMgmts:."); 
$cpus = $wmi->InstancesOf(”Win32_Processor”); 
$cpuload = 0; 
$i = 0; 
while ($cpu = $cpus->Next()) { 
$cpuload += $cpu->LoadPercentage; 
$i++; 


$cpuload = round($cpuload / $i, 2); 
return “$cpuload%”; 

else { 
return false; 



print_r(get_server_load(true)); 
?> 
Bình luận
0